MED fichier
test10_mem.c
Aller à la documentation de ce fichier.
1 /* This file is part of MED.
2  *
3  * COPYRIGHT (C) 1999 - 2021 EDF R&D, CEA/DEN
4  * MED is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * MED is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with MED. If not, see <http://www.gnu.org/licenses/>.
16  */
17 #define _a 0.446948490915965
18 #define _b 0.091576213509771
19 #define _p1 0.11169079483905
20 #define _p2 0.0549758718227661
21 
22 /******************************************************************************
23  * - Nom du fichier : test10_mem.c
24  *
25  * - Description : ecriture de champs de resultats MED en mémoire
26  *
27  *****************************************************************************/
28 
29 
30 #include <med.h>
31 #define MESGERR 1
32 #include "med_utils.h"
33 #include <string.h>
34 
35 #ifdef DEF_LECT_ECR
36 #define MODE_ACCES MED_ACC_RDWR
37 #elif DEF_LECT_AJOUT
38 #define MODE_ACCES MED_ACC_RDEXT
39 #else
40 #define MODE_ACCES MED_ACC_CREAT
41 #endif
42 
43 #ifndef USER_INTERLACE
44 #define USER_INTERLACE MED_FULL_INTERLACE
45 #endif
46 
47 #define USER_MODE MED_COMPACT_STMODE
48 
49 int main (int argc, char **argv)
50 
51 
52 {
53  med_err ret=0;
54  med_idt fid;
55 
56  /* Maillage support aux champs*/
57  /* Ces maillages sont vides*/
58  char maa1[MED_NAME_SIZE+1]= "maa1";
59  char maa2[MED_NAME_SIZE+1]= "maa2";
60  char * lien_maa2 = "./testfoo.med";
61  char maa3[MED_NAME_SIZE+1]= "maa3";
62 
63 
64  /* Caractéristiques du champ n° 1 sur TRIA6 */
65  char nomcha1[MED_NAME_SIZE+1] = "champ reel";
66  char comp1[2*MED_SNAME_SIZE+1] = "comp1 comp2 ";
67  /*12345678901234561234567890123456*/
68  char unit1[2*MED_SNAME_SIZE+1] = "unit1 unit2 ";
69  med_int ncomp1 = 2;
70  /* Caractéristiques du model n° 1 de localisation des points de gauss pour le champ n° 1*/
71  med_int ngauss1_1 = 6;
72  char gauss1_1[MED_NAME_SIZE+1] = "Model n1";
73  med_float refcoo1[12] = { -1.0,1.0, -1.0,-1.0, 1.0,-1.0, -1.0,0.0, 0.0,-1.0, 0.0,0.0 };
74 
75  /* Constantes */
76 
77  med_float gscoo1_1[12] = { 2*_b-1, 1-4*_b, 2*_b-1, 2*_b-1, 1-4*_b,
78  2*_b-1, 1-4*_a, 2*_a-1, 2*_a-1, 1-4*_a, 2*_a-1, 2*_a-1 };
79  med_float wg1_1[6] = { 4*_p2, 4*_p2, 4*_p2, 4*_p1, 4*_p1, 4*_p1 };
80 
81  med_int nval1_1= 1*6; /*1 valeurs et 6 points de gauss par valeur */
82  med_int _nent1_1= 1; /*1 valeurs et 6 points de gauss par valeur */
83  med_float valr1_1[1*6*2] = {0.0,1.0, 2.0,3.0, 10.0,11.0, 12.0,13.0, 20.0,21.0, 22.0,23.0}; /* 2 composantes*/
84  /* Caractéristiques du model n° 2 de localisation des points de gauss pour le champ n° 1*/
85  med_int ngauss1_2 = 3;
86  char gauss1_2[MED_NAME_SIZE+1] = "Model n2";
87  med_float gscoo1_2[6] = { -2.0/3,1.0/3, -2.0/3,-2.0/3, 1.0/3,-2.0/3 };
88  med_float wg1_2[3] = { 2.0/3, 2.0/3, 2.0/3 };
89  med_int nval1_2= 2*3; /*2 valeurs et 3 points de gauss par valeur */
90  med_int _nent1_2= 2; /*2 valeurs et 3 points de gauss par valeur */
91  med_float valr1_2[2*3*2] = {0.0,1.0, 2.0,3.0, 10.0,11.0, 12.0,13.0, 20.0,21.0, 22.0,23.0}; /* 2 composantes*/
92  med_float valr1_2p[2*3*2] = { 12.0,13.0, 20.0,21.0, 22.0,23.0}; /* 2 composantes*/
93  /* Caractéristiques du model n° 3 sans points de gauss pour le champ n° 1*/
94  med_int nval1_3= 6; /*6 valeurs et pas de points de gauss */
95  med_int _nent1_3= 6; /*6 valeurs et pas de points de gauss */
96  med_float valr1_3[2*3*2] = {0.0,1.0, 2.0,3.0, 10.0,11.0, 12.0,13.0, 20.0,21.0, 22.0,23.0}; /* 2 composantes*/
97  med_float valr1_3p[2*2*2] = { 2.0,3.0, 10.0,11.0 }; /* 2 composantes profil1 */
98 
99  /* Caractéristiques du champ n° 2 */
100  char nomcha2[MED_NAME_SIZE+1] = "champ entier";
101  char comp2[3*MED_SNAME_SIZE+1] = "comp1 comp2 comp3 ";
102  /*123456789012345612345678901234561234567890123456*/
103  char unit2[3*MED_SNAME_SIZE+1] = "unit1 unit2 unit3 ";
104  med_int ncomp2 = 3;
105  med_int nval2 = 5; /*5 valeurs */
106  med_int valr2[5*3 ] = {0,1,2, 10,11,12, 20,21,22, 30,31,32, 40,41,42}; /* 3 composantes*/
107  med_int valr2p[3*3 ] = {0,1,2, 20,21,22, 40,41,42}; /* 3 composantes*/
108 
109  /* Profils utilisés */
110  char nomprofil1[MED_NAME_SIZE+1] = "PROFIL(champ(1))";
111  char nomprofil1b[MED_NAME_SIZE+1] = "PROFIL(champ(1b))";
112  char nomprofil2[MED_NAME_SIZE+1] = "PROFIL(champ2)";
113  med_int profil1[2] = { 2, 3 };
114  med_int profil2[3] = { 1, 3, 5 };
115 
116 
117  /* Caractéristiques du champ n° 3 */
118  char nomcha3[MED_NAME_SIZE+1] = "champ entier 3";
119  char comp3[3*MED_SNAME_SIZE+1] = "comp1 comp2 ";
120  /*123456789012345612345678901234561234567890123456*/
121  char unit3[3*MED_SNAME_SIZE+1] = "unit1 unit2 ";
122  char dtunit[MED_SNAME_SIZE+1] = "s";
123  med_int ncomp3 = 2;
124  med_int nval3 = 5*4; /*5 valeurs et 4 noeuds par element*/
125  med_int _nent3 = 5; /*5 valeurs et 4 noeuds par element*/
126  med_int valr3[5*4*2] = {0,1, 10,11, 20,21, 30,31,
127  40,41, 50,51, 60,61, 70,71,
128  80,81, 90,91, 100,101, 110,111,
129  120,121, 130,131, 140,141, 150,151,
130  160,161, 170,171, 180,181, 190,191}; /* 2 composantes*/
131  med_int valr3p[3*4*2] = {0,1, 10,11, 20,21, 30,31,
132  80,81, 90,91, 100,101, 110,111,
133  160,161, 170,171, 180,181, 190,191}; /* 2 composantes*/
134 
135 
136  char nomcoo[3*MED_SNAME_SIZE+1] = "x y z ";
137  char unicoo[3*MED_SNAME_SIZE+1] = "cm cm cm ";
138 
139  char _maa[MED_NAME_SIZE+1]="";
140  char _desc[MED_COMMENT_SIZE+1]="";
141  char _dtunit[MED_SNAME_SIZE+1]="";
142  char _nomcoo[3*MED_SNAME_SIZE+1]="";
143  char _unicoo[3*MED_SNAME_SIZE+1]="";
144  med_int _nstep=0;
145  med_axis_type _rep;
146  med_mesh_type _type;
147  med_sorting_type _sort;
148  char __dtunit [MED_SNAME_SIZE+1]="";
149  med_int _mdim=0,_sdim=0;
150 
151  med_int ncha=0;
152  med_access_mode _accessmode;
153 
154  /* Il n'est pas necessaire de pré-allouer la mémoire.
155  med-fichier s'occupe d'allouer la mémoire au fil de l'utilsation de l'API.*/
156  /* Attention la structure doit être initialisée à MED_MEMFILE_INIT avant toute première utilisation.*/
157  med_memfile memfile[1] = MED_MEMFILE_INIT;
158 
159  /* On décide de pré-allouer suffisement de mémoire : 10MB */
160  /* med-fichier utilisera l'espace réservé sans réallocation.*/
161  /* memfile[0].app_image_size = 10*1024*1024; */
162  /* memfile[0].app_image_ptr = calloc(memfile[0].app_image_size,sizeof(char)); */
163 
164  /* On décide de pré-allouer insuffisement de mémoire : 1KB */
165  /* med-fichier utilisera l'espace réservé puis effectuera une réallocation.*/
166  /* memfile[0].app_image_size = 1024; */
167  /* memfile[0].app_image_ptr = calloc(memfile[0].app_image_size,sizeof(char)); */
168 
169  AFF_MEMFILE;
170 
171  /* Ouverture du fichier */
172  /* mode RDWR uniquement si le fichier test10.med a préalablement été généré par test10
173  ou par le sync de test10_mem (en CREATE).
174  Si test10.med n'existe pas et demande le mode RDWR
175  -> erreur car nous n'avons pas initialisé une image mémoire valide !
176  */
177  _accessmode = MED_ACC_CREAT;
178  if ((fid = MEDmemFileOpen("test10.med",memfile,MED_TRUE,_accessmode) ) < 0){
179  MESSAGE("Erreur à l'ouverture du fichier : ");
180  return -1;
181  }
182  /* Ouverture du fichier */
183  /* Si l'on ne veut pas créer de fichier sur disque, sync=MED_FALSE */
184  /* if ((fid = MEDmemFileOpen("test10.med",memfile,MED_FALSE,MED_ACC_CREAT) ) < 0){ */
185  /* MESSAGE("Erreur à l'ouverture du fichier : "); */
186  /* return -1; */
187  /* } */
188 
189  AFF_MEMFILE;
190 
191  /* combien de champs dans le fichier (pour tester le fichier mémoire)*/
192  if ((ncha = MEDnField(fid)) < 0) {
193  MESSAGE("Impossible de lire le nombre de champs : ");ISCRUTE(ncha);
194  }
195  printf("Nombre de champs : "IFORMAT" \n",ncha);
196  if (ncha == 3 ) { /*Un quatrième champ est crée seulement si un fichier test10.med existait et mode RDWR + sync */
197  /* creation du champ réel n° 1 */
198  if ( MEDfieldCr(fid,"Ajout Complémentaire",MED_FLOAT64,ncomp1,comp1,unit1,dtunit,maa1 ) < 0) {
199  MESSAGE("Erreur à la création du champ : ");SSCRUTE("Ajout Complémentaire");
200  ret = -1;
201  };
202  }
203  /* creation de maa1 de dimension 3*/
204  if (MEDmeshCr( fid, maa1, 3, 3, MED_UNSTRUCTURED_MESH,
205  "Maillage vide","s", MED_SORT_DTIT,
206  MED_CARTESIAN, nomcoo, unicoo) < 0) {
207  MESSAGE("Erreur a la creation du maillage : "); SSCRUTE(maa1);
208  ret = -1;
209  }
210 
211 
212  /* creation de maa3 de dimension 3*/
213  if (MEDmeshCr( fid, maa3, 3, 3, MED_UNSTRUCTURED_MESH,
214  "Maillage vide","s", MED_SORT_DTIT,
215  MED_CARTESIAN, nomcoo, unicoo) < 0) {
216  MESSAGE("Erreur a la creation du maillage : "); SSCRUTE(maa3);
217  ret = -1;
218  }
219 
220 
221  /* creation du champ réel n° 1 */
222  if ( MEDfieldCr(fid,nomcha1,MED_FLOAT64,ncomp1,comp1,unit1,dtunit,maa1 ) < 0) {
223  MESSAGE("Erreur à la création du champ : ");SSCRUTE(nomcha1);
224  ret = -1;
225  };
226 
227  /* creation du champ entier n° 2 */
228  if ( MEDfieldCr(fid,nomcha2,MED_INT32,ncomp2,comp2,unit2,dtunit,maa2 ) < 0) {
229  MESSAGE("Erreur à la création du champ : ");SSCRUTE(nomcha2);
230  ret = -1;
231  };
232 
233  /* creation du lien au fichier distant contenant maa2 */
234  if (MEDlinkWr(fid,maa2,lien_maa2) < 0) {
235  MESSAGE("Erreur à la création du lien : ");SSCRUTE(lien_maa2);
236  ret = -1;
237  };
238 
239  /* creation de la localisation des points de Gauss modèle n° 1 */
240  if (MEDlocalizationWr(fid, gauss1_1, MED_TRIA6, MED_TRIA6/100, refcoo1, USER_INTERLACE,
241  ngauss1_1, gscoo1_1, wg1_1,
243  MESSAGE("Erreur à la création du modèle n° 1 : ");SSCRUTE(gauss1_1);
244  ret = -1;
245  };
246 
247  /* creation de la localisation des points de Gauss modèle n° 2 */
248  if (MEDlocalizationWr(fid, gauss1_2, MED_TRIA6, MED_TRIA6/100, refcoo1, USER_INTERLACE,
249  ngauss1_2, gscoo1_2, wg1_2,
251  MESSAGE("Erreur à la création du modèle n° 1 : ");SSCRUTE(gauss1_2);
252  ret = -1;
253  };
254 
255  /* ecriture du champ n° 1*/
256  /* enregistre uniquement les composantes n° 2 de valr1_1, et n'utilise ni pas de temps ni n° d'ordre*/
257 
259  gauss1_1,USER_INTERLACE, 2, _nent1_1, (unsigned char*)valr1_1 ) < 0) {
260  MESSAGE("Erreur à l'écriture du champ : ");
262  SSCRUTE(maa1);
263  ret = -1;
264  };
265 
266 
267 
268  /* enregistre uniquement les composantes n° 1 de valr1_1, et n'utilise ni pas de temps ni n° d'ordre */
269 
271  gauss1_1,USER_INTERLACE, 1, _nent1_1, (unsigned char*)valr1_1 ) < 0) {
272  MESSAGE("Erreur à l'écriture du champ : ");
274  SSCRUTE(maa1);
275  ret = -1;
276  };
277 
278  /* enregistre uniquement les composantes n° 1 de valr1_2, au pas de temps n° 1(5.5), n'utilise pas de n° d'ordre*/
279  /* ce champ repose sur le maillage maa2 qui est distant */
280 
282  gauss1_2,USER_INTERLACE, 1, _nent1_2, (unsigned char*)valr1_2 ) < 0) {
283  MESSAGE("Erreur à l'écriture du champ : ");
285  SSCRUTE(maa1);
286  ret = -1;
287  };
288 
289  /* Le test initial utilisait un deuxième maillage epour un même champ et une même étape de calcul,
290  ceci n'existe plus en 3.0*/
291  /* enregistre uniquement les composantes n° 2 de valr1_2, au pas de temps n° 1(5.5), n'utilise pas de n° d'ordre*/
292  /* ce champ repose sur le maillage maa1 qui est local */
293 
295  gauss1_1,USER_INTERLACE, 2, _nent1_1, (unsigned char*)valr1_1 ) < 0) {
296  MESSAGE("Erreur à l'écriture du champ : ");
298  SSCRUTE(maa1);
299  ret = -1;
300  };
301 
302 
303  /* enregistre uniquement les composantes n° 1 de valr1_1, au pas de temps n° 1(5.5), et n° d'itération n° 2*/
304  /* ce champ repose sur le maillage maa3 qui est local */
305 
307  gauss1_2,USER_INTERLACE, 1, _nent1_2, (unsigned char*)valr1_2 ) < 0) {
308  MESSAGE("Erreur à l'écriture du champ : ");
309  SSCRUTE(nomcha1);SSCRUTE(MED_NO_PROFILE);
310  SSCRUTE(maa1);
311  ret = -1;
312  };
313 
314  /* Creation d'un profil (selection du deuxieme élément de valr1_1) */
315  /* On n'utilise que la première valeur (2) du profil */
316  if ( MEDprofileWr(fid,nomprofil1,1,profil1) < 0) {
317  MESSAGE("Erreur à l'écriture du profil : ");
318  SSCRUTE(nomprofil1);
319  ret = -1;
320  };
321 
322 
323  if ( MEDprofileWr(fid,nomprofil1b,1,profil1) < 0) {
324  MESSAGE("Erreur à l'écriture du profil : ");
325  SSCRUTE(nomprofil1b);
326  ret = -1;
327  };
328 
329 
330 
331 
332  /* enregistre toutes les composantes du deuxième élément de valr1_1 (premier élément en stockage compact de valr1p),
333  au pas de temps n° 2(5.6), et n° d'itération n° 2*/
334  if ( MEDfieldValueWithProfileWr(fid, nomcha1,2,2,5.6,MED_CELL,MED_TRIA6,USER_MODE,nomprofil1,
335  MED_NO_LOCALIZATION,USER_INTERLACE, MED_ALL_CONSTITUENT, nval1_3, (unsigned char*)valr1_3p ) < 0) {
336  MESSAGE("Erreur à l'écriture du champ : ");
337  SSCRUTE(nomcha1);SSCRUTE(MED_NO_PROFILE);
338  SSCRUTE(maa1);
339  ret = -1;
340  };
341 
342  /* enregistre toutes les composantes du deuxième élément de valr1_1 (premier élément en stockage compact de valr1p),
343  au pas de temps n° 2(5.6), et n° d'itération n° 2 */
344 
345  if ( MEDfieldValueWithProfileWr(fid, nomcha1,2,2,5.6,MED_CELL,MED_TRIA6,USER_MODE,nomprofil1b,
346  gauss1_2,USER_INTERLACE, MED_ALL_CONSTITUENT, _nent1_2, (unsigned char*)valr1_2p ) < 0) {
347  MESSAGE("Erreur à l'écriture du champ : ");
348  SSCRUTE(nomcha1);SSCRUTE(MED_NO_PROFILE);
349  SSCRUTE(maa1);
350  ret = -1;
351  };
352 
353 
354  if ( MEDfieldValueWithProfileWr(fid, nomcha1,3,2,5.7,MED_CELL,MED_TRIA6,USER_MODE,nomprofil1,
355  MED_NO_LOCALIZATION,USER_INTERLACE, 2, _nent1_3, (unsigned char*)valr1_3p ) < 0) {
356  MESSAGE("Erreur à l'écriture du champ : ");
357  SSCRUTE(nomcha1);SSCRUTE(MED_NO_PROFILE);
358  SSCRUTE(maa1);
359  ret = -1;
360  };
361 
362 
363  /* Ecriture du champ n° 2 */
364 
365 
366  if ( MEDfieldValueWr(fid, nomcha2,MED_NO_DT,MED_NO_IT,0,
368  USER_INTERLACE, 1, nval2, (unsigned char*)valr2 ) < 0) {
369  MESSAGE("Erreur à l'écriture du champ : ");
371  SSCRUTE(maa1);
372  ret = -1;
373  };
374 
375 
377  USER_INTERLACE, 2, nval2, (unsigned char*)valr2 ) < 0) {
378  MESSAGE("Erreur à l'écriture du champ : ");
380  SSCRUTE(maa1);
381  ret = -1;
382  };
383 
384 
386  USER_INTERLACE, 3, nval2, (unsigned char*)valr2 ) < 0) {
387  MESSAGE("Erreur à l'écriture du champ : ");
389  SSCRUTE(maa1);
390  ret = -1;
391  };
392 
393  /* Creation d'un profil (selection des éléments 1,3,5 de valr2) */
394  /* On utilise les trois valeurs du profil */
395  if ( MEDprofileWr(fid,nomprofil2,3,profil2) < 0) {
396  MESSAGE("Erreur à l'écriture du profil : ");
397  SSCRUTE(nomprofil2);
398  ret = -1;
399  };
400 
401 
403  MED_NO_LOCALIZATION,USER_INTERLACE, 3, nval2, (unsigned char*)valr2p ) < 0) {
404  MESSAGE("Erreur à l'écriture du champ : ");
406  SSCRUTE(maa1);
407  ret = -1;
408  };
409 
410  /* creation du champ entier n° 3 */
411  if ( MEDfieldCr(fid,nomcha3,MED_INT32,ncomp3,comp3,unit3,dtunit,maa1) < 0) {
412  MESSAGE("Erreur à la création du champ : ");SSCRUTE(nomcha3);
413  ret = -1;
414  };
415 
416  /* Ecriture du champ n° 3 */
417 
419  USER_INTERLACE, 1, nval3, (unsigned char*)valr3 ) < 0) {
420  MESSAGE("Erreur à l'écriture du champ : ");
422  SSCRUTE(maa1);
423  ret = -1;
424  };
425 
427  USER_INTERLACE, MED_ALL_CONSTITUENT, _nent3, (unsigned char*)valr3 ) < 0) {
428  MESSAGE("Erreur à l'écriture du champ : ");
430  SSCRUTE(maa1);
431  ret = -1;
432  };
433 
435  MED_NO_LOCALIZATION,USER_INTERLACE, MED_ALL_CONSTITUENT, _nent3, (unsigned char*)valr3p ) < 0) {
436  MESSAGE("Erreur à l'écriture du champ : ");
438  SSCRUTE(maa1);
439  ret = -1;
440  };
441 
443 
444  /* fermeture du fichier */
445  if ( MEDfileClose(fid) < 0 ) {
446  ret=-1;
447  MESSAGE("Erreur à la fermeture du fichier ");
448  }
450 
451  /* H5Fflush(fid, H5F_SCOPE_GLOBAL ); */
452  _accessmode = MED_ACC_RDWR;
453  /*ATTENTION : Il faut au moins une écriture/création dans le fichier pour que le sync se fasse en mode RW*/
454  if ((fid = MEDmemFileOpen("test10_mem.med",memfile,MED_TRUE,_accessmode) ) < 0){
455  MESSAGE("Erreur à l'ouverture du fichier : ");
456  return -1;
457  }
458 
460 
461  /* combien de champs dans le fichier (pour tester le fichier mémoire)*/
462  if ((ncha = MEDnField(fid)) < 0) {
463  MESSAGE("Impossible de lire le nombre de champs : ");ISCRUTE(ncha);
464  }
465  printf("Nombre de champs : "IFORMAT" \n",ncha);
466 
467  /*Il faut une écriture pour que le sync se fasse en mode RW*/
468  if ( (ncha == 3) || (_accessmode == MED_ACC_RDWR) )
469  /* creation du champ complémentaire n° 2 */
470  if ( MEDfieldCr(fid,"Ajout Complémentaire 2",MED_FLOAT64,ncomp1,comp1,unit1,dtunit,maa1 ) < 0) {
471  MESSAGE("Erreur à la création du champ : Complémentaire 2");
472  ret = -1;
473  };
474 
476 
477  /* Lecture des infos concernant le premier maillage */
478  if ( MEDmeshInfo( fid, 1, _maa, &_sdim, &_mdim, &_type, _desc, __dtunit, &_sort,
479  &_nstep, &_rep, _nomcoo,_unicoo) < 0 ) {
480  MESSAGE("Erreur a la lecture des informations sur le maillage : ");SSCRUTE(_maa);
481  return -1;
482  } else {
483  printf("Maillage de nom : |%s| , de dimension : "IFORMAT" , et de type %d\n",_maa,_mdim,_type);
484  printf("\t -Dimension de l'espace : "IFORMAT"\n",_sdim);
485  printf("\t -Description du maillage : %s\n",_desc);
486  printf("\t -Noms des axes : |%s|\n",_nomcoo);
487  printf("\t -Unités des axes : |%s|\n",_unicoo);
488  printf("\t -Type de repère : %d\n",_rep);
489  printf("\t -Nombre d'étapes de calcul : "IFORMAT"\n",_nstep);
490  printf("\t -Unité des dates : |%s|\n",__dtunit);
491  }
492 
493  /* combien de champs dans le fichier (pour tester le fichier mémoire)*/
494  if ((ncha = MEDnField(fid)) < 0) {
495  MESSAGE("Impossible de lire le nombre de champs : ");ISCRUTE(ncha);
496  }
497  printf("Nombre de champs : "IFORMAT" \n",ncha);
498 
499  if ( MEDfileClose(fid) < 0 ) {
500  ret=-1;
501  MESSAGE("Erreur à la fermeture du fichier ");
502  }
503 
505 
506  free(memfile[0].app_image_ptr);
507  memfile->app_image_size =0;
508  return ret;
509 }
510 
511 
512 
513 
MED_CARTESIAN
Definition: med.h:258
MEDfieldCr
MEDC_EXPORT med_err MEDfieldCr(const med_idt fid, const char *const fieldname, const med_field_type fieldtype, const med_int ncomponent, const char *const componentname, const char *const componentunit, const char *const dtunit, const char *const meshname)
Cette fonction crée un champ dans un fichier.
Definition: MEDfieldCr.c:44
_p1
#define _p1
Definition: test10_mem.c:19
MED_SORT_DTIT
Definition: med.h:309
MED_COMMENT_SIZE
#define MED_COMMENT_SIZE
Definition: med.h:79
MEDmeshCr
MEDC_EXPORT med_err MEDmeshCr(const med_idt fid, const char *const meshname, const med_int spacedim, const med_int meshdim, const med_mesh_type meshtype, const char *const description, const char *const dtunit, const med_sorting_type sortingtype, const med_axis_type axistype, const char *const axisname, const char *const axisunit)
Cette routine permet de créer un maillage dans un fichier.
Definition: MEDmeshCr.c:45
MED_SNAME_SIZE
#define MED_SNAME_SIZE
Definition: med.h:82
MEDnField
MEDC_EXPORT med_int MEDnField(const med_idt fid)
Cette fonction permet de lire le nombre de champs dans un fichier.
Definition: MEDnField.c:35
ISCRUTE_int
#define ISCRUTE_int(entier)
Definition: med_utils.h:314
MED_DESCENDING_FACE
Definition: med.h:143
med_idt
hid_t med_idt
Definition: med.h:331
MED_SEG2
#define MED_SEG2
Definition: med.h:200
USER_MODE
#define USER_MODE
Definition: test10_mem.c:46
med_err
herr_t med_err
Definition: med.h:332
med_sorting_type
med_sorting_type
Definition: med.h:309
MED_NO_LOCALIZATION
#define MED_NO_LOCALIZATION
Definition: med.h:275
MED_TRUE
Definition: med.h:260
MED_ALLENTITIES_PROFILE
#define MED_ALLENTITIES_PROFILE
Definition: med.h:291
MED_CELL
Definition: med.h:143
MESSAGE
#define MESSAGE(chaine)
Definition: med_utils.h:324
MEDlinkWr
MEDC_EXPORT med_err MEDlinkWr(const med_idt fid, const char *const meshname, const char *const link)
Cette routine permet d'écrire un lien dans un fichier MED.
Definition: MEDlinkWr.c:36
MED_INT32
Definition: med.h:168
med_int
int med_int
Definition: med.h:342
_b
#define _b
Definition: test10_mem.c:18
MED_NO_MESH_SUPPORT
#define MED_NO_MESH_SUPPORT
Definition: med.h:273
MED_ACC_RDWR
Definition: med.h:121
med.h
ISCRUTE
#define ISCRUTE(entier)
Definition: med_utils.h:313
med_float
double med_float
Definition: med.h:336
IFORMAT
#define IFORMAT
Definition: med_utils.h:145
MED_NO_DT
#define MED_NO_DT
Definition: med.h:320
MED_NONE
#define MED_NONE
Definition: med.h:231
med_access_mode
med_access_mode
Definition: med.h:120
_p2
#define _p2
Definition: test10_mem.c:20
med_memfile::app_image_size
size_t app_image_size
Definition: med.h:395
MED_NODE
Definition: med.h:143
MED_MEMFILE_INIT
#define MED_MEMFILE_INIT
Definition: med.h:407
med_mesh_type
med_mesh_type
Definition: med.h:131
SSCRUTE
#define SSCRUTE(chaine)
Definition: med_utils.h:323
MED_ACC_CREAT
Definition: med.h:123
MEDprofileWr
MEDC_EXPORT med_err MEDprofileWr(const med_idt fid, const char *const profilename, const med_int profilesize, const med_int *const profilearray)
Cette routine permet d'écrire un profil dans un fichier MED.
Definition: MEDprofileWr.c:40
MED_NAME_SIZE
#define MED_NAME_SIZE
Definition: med.h:81
MED_UNSTRUCTURED_MESH
Definition: med.h:131
MEDfileClose
MEDC_EXPORT med_err MEDfileClose(med_idt fid)
Fermeture d'un fichier MED.
Definition: MEDfileClose.c:30
med_memfile
Structure d'acceuil du buffer d'un fichier MED en mémoire.
Definition: med.h:393
MED_ALL_CONSTITUENT
#define MED_ALL_CONSTITUENT
Definition: med.h:299
MEDfieldValueWithProfileWr
MEDC_EXPORT med_err MEDfieldValueWithProfileWr(const med_idt fid, const char *const fieldname, const med_int numdt, const med_int numit, const med_float dt, const med_entity_type entitype, const med_geometry_type geotype, const med_storage_mode storagemode, const char *const profilename, const char *const localizationname, const med_switch_mode switchmode, const med_int componentselect, const med_int nentity, const unsigned char *const value)
Cette fonction permet d'écrire les valeurs d'un champ définies sur des entités d'un maillage pour une...
Definition: MEDfieldValueWithProfileWr.c:48
MED_NO_PROFILE
#define MED_NO_PROFILE
Definition: med.h:281
AFF_MEMFILE
#define AFF_MEMFILE
Definition: med.h:410
med_axis_type
med_axis_type
Definition: med.h:258
USER_INTERLACE
#define USER_INTERLACE
Definition: test10_mem.c:43
MED_FLOAT64
Definition: med.h:166
MEDmeshInfo
MEDC_EXPORT med_err MEDmeshInfo(const med_idt fid, const int meshit, char *const meshname, med_int *const spacedim, med_int *const meshdim, med_mesh_type *const meshtype, char *const description, char *const dtunit, med_sorting_type *const sortingtype, med_int *const nstep, med_axis_type *const axistype, char *const axisname, char *const axisunit)
Cette routine permet de lire les informations relatives à un maillage dans un fichier.
Definition: MEDmeshInfo.c:43
MED_NO_IT
#define MED_NO_IT
Definition: med.h:321
_a
#define _a
Definition: test10_mem.c:17
main
int main(int argc, char **argv)
Definition: test10_mem.c:48
MEDmemFileOpen
MEDC_EXPORT med_idt MEDmemFileOpen(const char *const filename, med_memfile *const memfile, const med_bool filesync, const med_access_mode accessmode)
Ouverture d'un fichier MED pour une utilisation en mémoire.
Definition: MEDmemFileOpen.c:43
MED_NO_INTERPOLATION
#define MED_NO_INTERPOLATION
Definition: med.h:277
MEDlocalizationWr
MEDC_EXPORT med_err MEDlocalizationWr(const med_idt fid, const char *const localizationname, const med_geometry_type geotype, const med_int spacedimension, const med_float *const elementcoordinate, const med_switch_mode switchmode, const med_int nipoint, const med_float *const ipointcoordinate, const med_float *const weight, const char *const geointerpname, const char *const ipointstructmeshname)
Cette routine permet l'écriture d'une localisation localizationname de points d'intégration dans/auto...
Definition: MEDlocalizationWr.c:49
med_utils.h
MEDfieldValueWr
MEDC_EXPORT med_err MEDfieldValueWr(const med_idt fid, const char *const fieldname, const med_int numdt, const med_int numit, const med_float dt, const med_entity_type entitype, const med_geometry_type geotype, const med_switch_mode switchmode, const med_int componentselect, const med_int nentity, const unsigned char *const value)
Cette fonction permet d'écrire les valeurs d'un champ définies sur des entités d'un maillage pour une...
Definition: MEDfieldValueWr.c:44
MED_QUAD4
#define MED_QUAD4
Definition: med.h:204
MED_TRIA6
#define MED_TRIA6
Definition: med.h:205
MED_NODE_ELEMENT
Definition: med.h:144
MED_DESCENDING_EDGE
Definition: med.h:143