MEDstructureCoordLire.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 MEDstructureCoordLire(med_idt fid,char *maillage,med_int mdim,med_int *structure)
00028 {
00029 med_idt maaid, noeid, dataset;
00030 med_err ret;
00031 char chemin[MED_TAILLE_MAA+MED_TAILLE_NOM+1];
00032 char nom_dataset[MED_TAILLE_NOM_ENTITE+1];
00033 char nom_attribut[MED_TAILLE_NOM_ENTITE+1];
00034 med_int att;
00035 med_maillage maillage_type;
00036 med_type_grille type;
00037 med_int i;
00038
00039
00040
00041
00042 _MEDmodeErreurVerrouiller();
00043 if (MEDcheckVersion(fid) < 0) return -1;
00044
00045
00046
00047
00048
00049 strcpy(chemin,MED_MAA);
00050 strcat(chemin,maillage);
00051 if ((maaid = _MEDdatagroupOuvrir(fid,chemin)) < 0)
00052 return -1;
00053
00054
00055
00056
00057 if ((ret = _MEDattrEntierLire(maaid,MED_NOM_TYP,&att)) < 0)
00058 return -1;
00059 maillage_type = (med_maillage) att;
00060 if (maillage_type == MED_NON_STRUCTURE)
00061 return -1;
00062
00063
00064
00065
00066
00067 if ((ret = _MEDattrEntierLire(maaid,MED_NOM_GTY,&att)) < 0)
00068 return -1;
00069 type = (med_type_grille) att;
00070 if (type != MED_GRILLE_STANDARD)
00071 return -1;
00072
00073
00074
00075
00076 if ((noeid = _MEDdatagroupOuvrir(maaid,MED_NOM_NOE)) < 0)
00077 return -1;
00078
00079
00080
00081
00082
00083 strcpy(nom_dataset,MED_NOM_COO);
00084 if ((dataset = _MEDdatasetOuvrir(noeid,nom_dataset)) < 0)
00085 return -1;
00086
00087
00088
00089
00090 for (i=0;i<mdim;i++) {
00091
00092 switch(i) {
00093 case 0 :
00094 strcpy(nom_attribut,MED_NOM_IN1);
00095 break;
00096
00097 case 1 :
00098 strcpy(nom_attribut,MED_NOM_IN2);
00099 break;
00100
00101 case 2 :
00102 strcpy(nom_attribut,MED_NOM_IN3);
00103 break;
00104
00105 default :
00106 return -1;
00107 }
00108
00109 if ((ret = _MEDattrEntierLire(dataset,nom_attribut,&att)) < 0)
00110 return -1;
00111 *(structure+i) = att;
00112
00113 }
00114
00115
00116
00117
00118 if ((ret = _MEDdatasetFermer(dataset)) < 0)
00119 return -1;
00120 if ((ret = _MEDdatagroupFermer(noeid)) < 0)
00121 return -1;
00122 if ((ret = _MEDdatagroupFermer(maaid)) < 0)
00123 return -1;
00124
00125 return 0;
00126 }