MEDindicesCoordEcr.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 MEDindicesCoordEcr(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 med_size dimd[1];
00033 char chemin[MED_TAILLE_MAA+MED_TAILLE_NOM+1];
00034 char nom_dataset[MED_TAILLE_NOM_ENTITE+1];
00035 med_int att;
00036 med_maillage maillage_type;
00037 med_type_grille type;
00038
00039
00040
00041
00042 if (axe > mdim)
00043 return -1;
00044
00045
00046
00047
00048 _MEDmodeErreurVerrouiller();
00049 if (MEDcheckVersion(fid) < 0) return -1;
00050
00051
00052
00053
00054
00055 strcpy(chemin,MED_MAA);
00056 strcat(chemin,maillage);
00057 if ((maaid = _MEDdatagroupOuvrir(fid,chemin)) < 0)
00058 return -1;
00059
00060
00061
00062
00063 if ((ret = _MEDattrEntierLire(maaid,MED_NOM_TYP,&att)) < 0)
00064 return -1;
00065 maillage_type = (med_maillage) att;
00066 if (maillage_type == MED_NON_STRUCTURE)
00067 return -1;
00068
00069
00070
00071
00072
00073 if ((ret = _MEDattrEntierLire(maaid,MED_NOM_GTY,&att)) < 0)
00074 return -1;
00075
00076
00077
00078
00079
00080 type = (med_type_grille) att;
00081 if ((type != MED_GRILLE_CARTESIENNE) && (type != MED_GRILLE_POLAIRE))
00082 return -1;
00083
00084
00085
00086
00087 if ((noeid = _MEDdatagroupOuvrir(maaid,MED_NOM_NOE)) < 0)
00088 if ((noeid = _MEDdatagroupCreer(maaid,MED_NOM_NOE)) < 0)
00089 return -1;
00090
00091
00092
00093
00094 switch(axe) {
00095
00096 case 1 :
00097 strcpy(nom_dataset,MED_NOM_IN1);
00098 break;
00099
00100 case 2 :
00101 strcpy(nom_dataset,MED_NOM_IN2);
00102 break;
00103
00104 case 3 :
00105 strcpy(nom_dataset,MED_NOM_IN3);
00106 break;
00107
00108 default :
00109 return -1;
00110
00111 }
00112
00113 dimd[0] = n;
00114 if ((ret = _MEDdatasetNumEcrire(noeid,nom_dataset,MED_FLOAT64,MED_FULL_INTERLACE,1,MED_ALL,MED_NOPF,MED_NO_PFLMOD,0,0,
00115 MED_NOPG,dimd,(unsigned char*) indices)) < 0)
00116 return -1;
00117
00118
00119
00120
00121 if ((dataset = _MEDdatasetOuvrir(noeid,nom_dataset)) < 0)
00122 return -1;
00123
00124
00125
00126
00127 if ((ret = _MEDattrEntierEcrire(dataset,MED_NOM_NBR,&n)) < 0)
00128 return -1;
00129
00130
00131
00132
00133 if ((ret = _MEDattrStringEcrire(dataset,MED_NOM_NOM,MED_TAILLE_PNOM,comp)) < 0)
00134 return -1;
00135
00136
00137
00138
00139 if ((ret = _MEDattrStringEcrire(dataset,MED_NOM_UNI,MED_TAILLE_PNOM,unit)) < 0)
00140 return -1;
00141
00142
00143
00144
00145 if ((ret = _MEDdatasetFermer(dataset)) < 0)
00146 return -1;
00147 if ((ret = _MEDdatagroupFermer(noeid)) < 0)
00148 return -1;
00149 if ((ret = _MEDdatagroupFermer(maaid)) < 0)
00150 return -1;
00151
00152 return 0;
00153 }