MEDindicesCoordLire.c
Aller à la documentation de ce fichier.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include <med.h>
00020 #include <med_config.h>
00021 #include <med_outils.h>
00022
00023 #include <stdlib.h>
00024 #include <string.h>
00025
00026 med_err
00027 MEDindicesCoordLire(med_idt fid,char *maillage,med_int mdim,med_float *indices,
00028 med_int n,med_int axe,char *comp,char *unit)
00029 {
00030 med_idt maaid, noeid, dataset;
00031 med_err ret;
00032 char chemin[MED_TAILLE_MAA+MED_TAILLE_NOM+1];
00033 char nom_dataset[MED_TAILLE_NOM_ENTITE+1];
00034 med_int att;
00035 med_maillage maillage_type;
00036 med_type_grille type;
00037
00038
00039
00040
00041 if (axe > mdim)
00042 return -1;
00043
00044
00045
00046
00047 _MEDmodeErreurVerrouiller();
00048 if (MEDcheckVersion(fid) < 0) return -1;
00049
00050
00051
00052
00053
00054 strcpy(chemin,MED_MAA);
00055 strcat(chemin,maillage);
00056 if ((maaid = _MEDdatagroupOuvrir(fid,chemin)) < 0)
00057 return -1;
00058
00059
00060
00061
00062 if ((ret = _MEDattrEntierLire(maaid,MED_NOM_TYP,&att)) < 0)
00063 return -1;
00064 maillage_type = (med_maillage) att;
00065 if (maillage_type == MED_NON_STRUCTURE)
00066 return -1;
00067
00068
00069
00070
00071
00072 if ((ret = _MEDattrEntierLire(maaid,MED_NOM_GTY,&att)) < 0)
00073 return -1;
00074 type = (med_type_grille) att;
00075 if ((type != MED_GRILLE_CARTESIENNE) && (type != MED_GRILLE_POLAIRE))
00076 return -1;
00077
00078
00079
00080
00081 if ((noeid = _MEDdatagroupOuvrir(maaid,MED_NOM_NOE)) < 0)
00082 return -1;
00083
00084
00085
00086
00087 switch(axe) {
00088
00089 case 1 :
00090 strcpy(nom_dataset,MED_NOM_IN1);
00091 break;
00092
00093 case 2 :
00094 strcpy(nom_dataset,MED_NOM_IN2);
00095 break;
00096
00097 case 3 :
00098 strcpy(nom_dataset,MED_NOM_IN3);
00099 break;
00100
00101 default :
00102 return -1;
00103
00104 }
00105
00106 if ((ret = _MEDdatasetNumLire(noeid,nom_dataset,MED_FLOAT64,MED_FULL_INTERLACE,1,MED_ALL,MED_NOPF,MED_NO_PFLMOD,MED_PFL_NON_COMPACT,0,
00107 MED_NOPG,0,(unsigned char*) indices)) < 0)
00108 return -1;
00109
00110
00111
00112
00113 if ((dataset = _MEDdatasetOuvrir(noeid,nom_dataset)) < 0)
00114 return -1;
00115
00116
00117
00118
00119 if ((ret = _MEDattrStringLire(dataset,MED_NOM_NOM,MED_TAILLE_PNOM,comp)) < 0)
00120 return -1;
00121
00122
00123
00124
00125 if ((ret = _MEDattrStringLire(dataset,MED_NOM_UNI,MED_TAILLE_PNOM,unit)) < 0)
00126 return -1;
00127
00128
00129
00130
00131 if ((ret = _MEDdatasetFermer(dataset)) < 0)
00132 return -1;
00133 if ((ret = _MEDdatagroupFermer(noeid)) < 0)
00134 return -1;
00135 if ((ret = _MEDdatagroupFermer(maaid)) < 0)
00136 return -1;
00137
00138 return 0;
00139 }