]> SALOME platform Git repositories - modules/med.git/blob - src/MEDWrapper/V2_1/Core/MEDgridLire.cxx
Salome HOME
Mantis issue 0021668: [CEA 564] MED2.1 to MED2.3
[modules/med.git] / src / MEDWrapper / V2_1 / Core / MEDgridLire.cxx
1 #include "med_outils.hxx"
2 #include "med.hxx"
3
4 #include <cstring>
5
6 namespace med_2_1{
7
8 med_err 
9 MEDgridLire(med_idt fid, char *maa, med_int mdim, med_float *coo, med_int dim, med_mode_switch mode_coo,
10             med_repere *repere, char *nomcoo, char *unicoo )
11 {
12     med_idt   maaid, noeid, ds;
13     char      chemin[MED_TAILLE_MAA+MED_TAILLE_NOM+1];
14     char      *dataset;
15     med_int   type_rep_int;
16
17     /* On inhibe le gestionnaire d'erreur */
18     _MEDmodeErreurVerrouiller();
19
20     /* Si le maillage n'existe pas => erreur */
21     strcpy(chemin, MED_MAA);
22     strcat(chemin, maa);
23     maaid = _MEDdatagroupOuvrir(fid, chemin);
24     if (maaid < 0) return(-1);
25
26     /* Si le Data Group "NOE" n'existe pas => erreur */
27     noeid = _MEDdatagroupOuvrir(maaid, MED_NOM_NOE);
28     if (noeid < 0) return(-1);
29
30     switch (dim) {
31         case 0 : {
32             dataset = MED_NOM_IN1;
33             break;
34         };
35         case 1 : {
36             dataset = MED_NOM_IN2;
37             break;
38         };
39         case 2 : {
40             dataset = MED_NOM_IN3;
41             break;
42         };
43         default : {
44             return(-1);
45         };
46     };
47
48     /* Lecture du Data Set "IN1" ou "IN2" ou "IN3" */
49     if (_MEDdatasetNumLire(noeid, dataset, MED_REEL64, mode_coo, 1, MED_ALL, MED_NOPF, 0, 1, (unsigned char*)coo) < 0) {
50         return(-1);
51     };
52
53     /* On re-ouvre le Data Set precedant pour y lire des attributs */
54     ds = _MEDdatasetOuvrir(noeid, dataset);
55     if (ds < 0) return(-1);
56
57     /* L'attribut "REP" */
58     if (_MEDattrEntierLire(ds, MED_NOM_REP, &type_rep_int) < 0) {
59         return(-1);
60     } else {
61         *repere = (med_repere)type_rep_int;
62     };
63
64     /* Attribut "NOM" */
65     if (_MEDattrStringLire(ds, MED_NOM_NOM, mdim*MED_TAILLE_PNOM, nomcoo) < 0) {
66         return(-1);
67     };
68
69     /* Attribut "UNI" */
70     if (_MEDattrStringLire(ds, MED_NOM_UNI, mdim*MED_TAILLE_PNOM, unicoo) < 0) {
71         return(-1);
72     };
73
74     /* On ferme tout */
75     if (_MEDdatasetFermer(ds) < 0) {
76         return(-1);
77     };
78     if (_MEDdatagroupFermer(noeid) < 0) {
79         return(-1);
80     };
81     if (_MEDdatagroupFermer(maaid) < 0) {
82         return(-1);
83     };
84     return(0);
85 }
86
87 }