Back to index

salome-med  6.5.0
MEDgridLire.cxx
Go to the documentation of this file.
00001 #include "med_outils.hxx"
00002 #include "med.hxx"
00003 
00004 #include <cstring>
00005 
00006 namespace med_2_1{
00007 
00008 med_err 
00009 MEDgridLire(med_idt fid, char *maa, med_int mdim, med_float *coo, med_int dim, med_mode_switch mode_coo,
00010             med_repere *repere, char *nomcoo, char *unicoo )
00011 {
00012     med_idt   maaid, noeid, ds;
00013     char      chemin[MED_TAILLE_MAA+MED_TAILLE_NOM+1];
00014     char      *dataset;
00015     med_int   type_rep_int;
00016 
00017     /* On inhibe le gestionnaire d'erreur */
00018     _MEDmodeErreurVerrouiller();
00019 
00020     /* Si le maillage n'existe pas => erreur */
00021     strcpy(chemin, MED_MAA);
00022     strcat(chemin, maa);
00023     maaid = _MEDdatagroupOuvrir(fid, chemin);
00024     if (maaid < 0) return(-1);
00025 
00026     /* Si le Data Group "NOE" n'existe pas => erreur */
00027     noeid = _MEDdatagroupOuvrir(maaid, MED_NOM_NOE);
00028     if (noeid < 0) return(-1);
00029 
00030     switch (dim) {
00031         case 0 : {
00032             dataset = MED_NOM_IN1;
00033             break;
00034         };
00035         case 1 : {
00036             dataset = MED_NOM_IN2;
00037             break;
00038         };
00039         case 2 : {
00040             dataset = MED_NOM_IN3;
00041             break;
00042         };
00043         default : {
00044             return(-1);
00045         };
00046     };
00047 
00048     /* Lecture du Data Set "IN1" ou "IN2" ou "IN3" */
00049     if (_MEDdatasetNumLire(noeid, dataset, MED_REEL64, mode_coo, 1, MED_ALL, MED_NOPF, 0, 1, (unsigned char*)coo) < 0) {
00050         return(-1);
00051     };
00052 
00053     /* On re-ouvre le Data Set precedant pour y lire des attributs */
00054     ds = _MEDdatasetOuvrir(noeid, dataset);
00055     if (ds < 0) return(-1);
00056 
00057     /* L'attribut "REP" */
00058     if (_MEDattrEntierLire(ds, MED_NOM_REP, &type_rep_int) < 0) {
00059         return(-1);
00060     } else {
00061         *repere = (med_repere)type_rep_int;
00062     };
00063 
00064     /* Attribut "NOM" */
00065     if (_MEDattrStringLire(ds, MED_NOM_NOM, mdim*MED_TAILLE_PNOM, nomcoo) < 0) {
00066         return(-1);
00067     };
00068 
00069     /* Attribut "UNI" */
00070     if (_MEDattrStringLire(ds, MED_NOM_UNI, mdim*MED_TAILLE_PNOM, unicoo) < 0) {
00071         return(-1);
00072     };
00073 
00074     /* On ferme tout */
00075     if (_MEDdatasetFermer(ds) < 0) {
00076         return(-1);
00077     };
00078     if (_MEDdatagroupFermer(noeid) < 0) {
00079         return(-1);
00080     };
00081     if (_MEDdatagroupFermer(maaid) < 0) {
00082         return(-1);
00083     };
00084     return(0);
00085 }
00086 
00087 }