1 /*************************************************************************
2 * COPYRIGHT (C) 1999 - 2002 EDF R&D
3 * THIS LIBRARY IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
4 * IT UNDER THE TERMS OF THE GNU LESSER GENERAL PUBLIC LICENSE
5 * AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION;
6 * EITHER VERSION 2.1 OF THE LICENSE, OR (AT YOUR OPTION) ANY LATER VERSION.
8 * THIS LIBRARY IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
9 * WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
10 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
11 * LESSER GENERAL PUBLIC LICENSE FOR MORE DETAILS.
13 * YOU SHOULD HAVE RECEIVED A COPY OF THE GNU LESSER GENERAL PUBLIC LICENSE
14 * ALONG WITH THIS LIBRARY; IF NOT, WRITE TO THE FREE SOFTWARE FOUNDATION,
15 * INC., 59 TEMPLE PLACE, SUITE 330, BOSTON, MA 02111-1307 USA
17 *************************************************************************/
20 #include "med_outils.hxx"
27 MEDnGrid(med_idt fid, char *maa, med_grid n)
29 med_idt maaid, entid, geoid, dataset;
30 char chemin[MED_TAILLE_MAA+MED_TAILLE_NOM+1];
31 char nom_ent[MED_TAILLE_NOM_ENTITE+1];
35 /* On inhibe le gestionnaire d'erreur HDF 5 */
36 _MEDmodeErreurVerrouiller();
38 /* Si le maillage n'existe pas => erreur */
39 strcpy(chemin, MED_MAA);
41 maaid = _MEDdatagroupOuvrir(fid, chemin);
42 if (maaid < 0) return(-1);
45 case MED_FAM_NOEUD : {
46 nom_dataset = MED_NOM_FAM;
47 if (_MEDnomEntite(nom_ent, MED_NOEUD) < 0) return(-1);
48 entid = _MEDdatagroupOuvrir(maaid, nom_ent);
51 case MED_FAM_ARETE : {
52 nom_dataset = MED_NOM_FAM;
53 if (_MEDnomEntite(nom_ent, MED_ARETE) < 0) return(-1);
54 geoid = _MEDdatagroupOuvrir(maaid, nom_ent);
55 if (geoid < 0) return(-1);
56 if (_MEDnomGeometrie(nom_ent, MED_SEG2) < 0) return(-1);
57 entid = _MEDdatagroupOuvrir(geoid, nom_ent);
61 nom_dataset = MED_NOM_FAM;
62 if (_MEDnomEntite(nom_ent, MED_FACE) < 0) return(-1);
63 geoid = _MEDdatagroupOuvrir(maaid, nom_ent);
64 if (geoid < 0) return(-1);
65 if (_MEDnomGeometrie(nom_ent, MED_QUAD4) < 0) return(-1);
66 entid = _MEDdatagroupOuvrir(geoid, nom_ent);
69 case MED_FAM_MAILLE : {
70 nom_dataset = MED_NOM_FAM;
71 if (_MEDnomEntite(nom_ent, MED_MAILLE) < 0) return(-1);
72 geoid = _MEDdatagroupOuvrir(maaid, nom_ent);
73 if (geoid < 0) return(-1);
74 if (_MEDnomGeometrie(nom_ent, MED_HEXA8) < 0) return(-1);
75 entid = _MEDdatagroupOuvrir(geoid, nom_ent);
78 case MED_GRID_NOEUD : {
79 nom_dataset = MED_NOM_BOF;
80 entid = _MEDdatagroupOuvrir(maaid, MED_NOM_NOE);
84 nom_dataset = MED_NOM_IN1;
85 entid = _MEDdatagroupOuvrir(maaid, MED_NOM_NOE);
89 nom_dataset = MED_NOM_IN2;
90 entid = _MEDdatagroupOuvrir(maaid, MED_NOM_NOE);
94 nom_dataset = MED_NOM_IN3;
95 entid = _MEDdatagroupOuvrir(maaid, MED_NOM_NOE);
103 if (entid < 0) return(-1);
104 dataset = _MEDdatasetOuvrir(entid, nom_dataset);
105 if (dataset < 0) return(-1);
106 if (_MEDattrEntierLire(dataset, MED_NOM_NBR, &res) < 0) return(-1);
109 if (_MEDdatasetFermer(dataset) < 0) return(-1);
110 if (_MEDdatagroupFermer(entid) < 0) return(-1);
111 if (_MEDdatagroupFermer(maaid) < 0) return(-1);