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