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