00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MESGERR
00020 #define MESGERR 1
00021 #endif
00022
00023 #include "med_config.h"
00024 #include "med_outils.h"
00025 #include <string.h>
00026
00027 #include <2.3.6/med23v30.h>
00028 #include <2.3.6/med23v30_proto.h>
00029 #include "2.3.6/med23v30_misc.h"
00030
00031 #include "MAJ_236_300.h"
00032
00033 int MAJ_236_300_mesh_datasets(med_idt fid,
00034 char * const _pathi,
00035 char * const _pathf,
00036 const char * const meshname,
00037 const med_entity_type enttype,
00038 const med_geometry_type geotype)
00039 {
00040 med_err _err=-1,_ret=-1;
00041 med_size _ndatasets=0;
00042 int _itdataset=0;
00043 char _idatasetname[MED_NAME_SIZE+1]="";
00044 med_int _cgs=MED_FALSE;
00045 char _savpathi[MED_TAILLE_MAA+MED_NAME_SIZE+1+2*MED_TAILLE_NOM_ENTITE+1+3+1]="";
00046 int _itmplen=0;
00047 int _ftmplen=0;
00048 med_int _1 = 1, _nbratt=0,_nbtype=0;
00049
00050
00051
00052
00053
00054 _itmplen=strlen(_pathi);
00055 _ftmplen=strlen(_pathf);
00056
00057
00058
00059
00060 if ((_err=_MEDnObjects(fid,_pathi,&_ndatasets)) <0)
00061 if ( _err == (MED_ERR_COUNT + MED_ERR_DATAGROUP) ) {
00062 MED_ERR_(_ret,MED_ERR_COUNT,MED_ERR_MESH,MED_MAA);
00063 goto ERROR;
00064 }
00065
00066
00067 for ( _itdataset=0; _itdataset < _ndatasets; ++_itdataset) {
00068
00069 if ( _MEDobjectGetName(fid, _pathi,_itdataset, _idatasetname) < 0 ) {
00070 MED_ERR_(_ret,MED_ERR_ACCESS,MED_ERR_DATAGROUP,_pathi);ISCRUTE_int(_itdataset);
00071 goto ERROR;
00072 }
00073
00074
00075
00076
00077
00078 if ( strcmp(_idatasetname,MED_NOM_COR) &&
00079 strcmp(_idatasetname,MED_NOM_COO) &&
00080 strcmp(_idatasetname,MED_NOM_NOD) &&
00081 strcmp(_idatasetname,MED_NOM_DES) &&
00082 strcmp(_idatasetname,MED_NOM_IN1) &&
00083 strcmp(_idatasetname,MED_NOM_IN2) &&
00084 strcmp(_idatasetname,MED_NOM_IN3) ) _cgs=MED_TRUE;
00085
00086
00087
00088 if ( (enttype == MED_NODE) && !strcmp(_idatasetname,MED_NOM_COO) ) {
00089 fprintf(stdout," >>> Normalisation des datasets sur les noeuds du maillage [%s] \n"
00090 ,meshname);
00091 _pathi[_itmplen]='/';
00092 strcpy(&_pathi[_itmplen+1],_idatasetname);
00093 H5Adelete_by_name( fid, _pathi, MED_NOM_NOM, H5P_DEFAULT );
00094 H5Adelete_by_name( fid, _pathi, MED_NOM_REP, H5P_DEFAULT );
00095 H5Adelete_by_name( fid, _pathi, MED_NOM_UNI, H5P_DEFAULT );
00096 }
00097
00098
00099 if ( (geotype == MED_POLYGON) && !strcmp(_idatasetname,MED_NOM_NOD) ) {
00100
00101 fprintf(stdout," >>> Normalisation des datasets sur les entites [%s] du maillage [%s] \n",
00102 MED_GET_ENTITY_TYPENAME[enttype+1],meshname);
00103
00104 _pathi[_itmplen]='/';
00105 strcpy(&_pathi[_itmplen+1],_idatasetname);
00106
00107
00108
00109
00110 if ( _MEDattributeNumRdByName(fid,_pathi,MED_NOM_NBR,MED_INTERNAL_INT,
00111 ( unsigned char * const) &_nbratt ) < 0 ) {
00112 MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_MESH_MSG);
00113 SSCRUTE(_pathi);SSCRUTE(MED_NOM_NBR);SSCRUTE(MED_GET_ENTITY_TYPENAME[enttype+1]);
00114 goto ERROR;
00115 }
00116 H5Adelete_by_name( fid, _pathi, MED_NOM_NBR, H5P_DEFAULT );
00117 H5Arename_by_name( fid, _pathi, MED_NOM_TAI, MED_NOM_NBR, H5P_DEFAULT);
00118
00119 _pathi[_itmplen]='/';
00120 strcpy(&_pathi[_itmplen+1],MED_NOM_INN);
00121
00122
00123
00124
00125
00126
00127 ++_nbratt;
00128 if ( _MEDattributeNumWrByName(fid,_pathi,MED_NOM_NBR,MED_INTERNAL_INT,
00129 (const unsigned char * const) &_nbratt ) < 0 ) {
00130 MED_ERR_(_ret,MED_ERR_WRITE,MED_ERR_ATTRIBUTE,MED_ERR_MESH_MSG);
00131 SSCRUTE(_pathi);SSCRUTE(MED_NOM_NBR);SSCRUTE(MED_GET_ENTITY_TYPENAME[enttype+1]);
00132 goto ERROR;
00133 }
00134
00135 }
00136
00137
00138 if ( (geotype == MED_POLYHEDRON) && !strcmp(_idatasetname,MED_NOM_IFD) ) {
00139
00140 fprintf(stdout," >>> Normalisation des datasets sur les entites [%s] du maillage [%s] \n",
00141 MED_GET_ENTITY_TYPENAME[enttype+1],meshname);
00142
00143 _pathi[_itmplen]='/';
00144 strcpy(_savpathi,_pathi);
00145
00146
00147 strcpy(&_pathi[_itmplen+1],MED_NOM_IND);
00148 strcpy(&_savpathi[_itmplen+1],MED_NOM_IND);strcat(_savpathi,"_");
00149 H5Lmove(fid, _pathi, fid, _savpathi, H5P_DEFAULT, H5P_DEFAULT );
00150
00151
00152 strcpy(&_pathi[_itmplen+1],MED_NOM_IFD);
00153 strcpy(&_savpathi[_itmplen+1],MED_NOM_IND);
00154 H5Lmove(fid, _pathi, fid, _savpathi, H5P_DEFAULT, H5P_DEFAULT );
00155
00156 strcpy(&_pathi[_itmplen+1],MED_NOM_IND);strcat(_pathi,"_");
00157 strcpy(&_savpathi[_itmplen+1],MED_NOM_IFD);
00158 H5Lmove(fid, _pathi, fid, _savpathi, H5P_DEFAULT, H5P_DEFAULT );
00159
00160
00161 _pathi[_itmplen]='/';
00162 strcpy(&_pathi[_itmplen+1],MED_NOM_DES);
00163 if ( _MEDattributeNumRdByName(fid,_pathi,MED_NOM_NBR,MED_INTERNAL_INT,
00164 ( unsigned char * const) &_nbratt ) < 0 ) {
00165 MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_MESH_MSG);
00166 SSCRUTE(_pathi);SSCRUTE(MED_NOM_NBR);SSCRUTE(MED_GET_ENTITY_TYPENAME[enttype+1]);
00167 goto ERROR;
00168 }
00169
00170 if ( _MEDattributeNumRdByName(fid,_pathi,MED_NOM_TTI,MED_INTERNAL_INT,
00171 ( unsigned char * const) &_nbtype ) < 0 ) {
00172 MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_MESH_MSG);
00173 SSCRUTE(_pathi);SSCRUTE(MED_NOM_TTI);SSCRUTE(MED_GET_ENTITY_TYPENAME[enttype+1]);
00174 goto ERROR;
00175 }
00176 H5Adelete_by_name( fid, _pathi, MED_NOM_NBR, H5P_DEFAULT );
00177 H5Adelete_by_name( fid, _pathi, MED_NOM_TTI, H5P_DEFAULT );
00178 H5Arename_by_name( fid, _pathi, MED_NOM_TAI, MED_NOM_NBR, H5P_DEFAULT);
00179
00180
00181 ++_nbratt;
00182 strcpy(&_pathi[_itmplen+1],MED_NOM_IND);
00183 if ( _MEDattributeNumWrByName(fid,_pathi,MED_NOM_NBR,MED_INTERNAL_INT,
00184 (const unsigned char * const) &_nbtype ) < 0 ) {
00185 MED_ERR_(_ret,MED_ERR_WRITE,MED_ERR_ATTRIBUTE,MED_ERR_MESH_MSG);
00186 SSCRUTE(_pathi);SSCRUTE(MED_NOM_NBR);SSCRUTE(MED_GET_ENTITY_TYPENAME[enttype+1]);
00187 goto ERROR;
00188 }
00189
00190
00191 strcpy(&_pathi[_itmplen+1],MED_NOM_IFD);
00192 if ( _MEDattributeNumWrByName(fid,_pathi,MED_NOM_NBR,MED_INTERNAL_INT,
00193 (const unsigned char * const) &_nbratt ) < 0 ) {
00194 MED_ERR_(_ret,MED_ERR_WRITE,MED_ERR_ATTRIBUTE,MED_ERR_MESH_MSG);
00195 SSCRUTE(_pathi);SSCRUTE(MED_NOM_NBR);SSCRUTE(MED_GET_ENTITY_TYPENAME[enttype+1]);
00196 goto ERROR;
00197 }
00198
00199 }
00200
00201
00202 if ( (geotype == MED_POLYHEDRON) && !strcmp(_idatasetname,MED_NOM_IFN) ) {
00203
00204 fprintf(stdout," >>> Normalisation des datasets sur les entites [%s] du maillage [%s] \n",
00205 MED_GET_ENTITY_TYPENAME[enttype+1],meshname);
00206
00207 _pathi[_itmplen]='/';
00208 strcpy(_savpathi,_pathi);
00209
00210
00211 strcpy(&_pathi[_itmplen+1],MED_NOM_INN);
00212 strcpy(&_savpathi[_itmplen+1],MED_NOM_INN);strcat(_savpathi,"_");
00213 H5Lmove(fid, _pathi, fid, _savpathi, H5P_DEFAULT, H5P_DEFAULT );
00214
00215
00216 strcpy(&_pathi[_itmplen+1],MED_NOM_IFN);
00217 strcpy(&_savpathi[_itmplen+1],MED_NOM_INN);
00218 H5Lmove(fid, _pathi, fid, _savpathi, H5P_DEFAULT, H5P_DEFAULT );
00219
00220 strcpy(&_pathi[_itmplen+1],MED_NOM_INN);strcat(_pathi,"_");
00221 strcpy(&_savpathi[_itmplen+1],MED_NOM_IFN);
00222 H5Lmove(fid, _pathi, fid, _savpathi, H5P_DEFAULT, H5P_DEFAULT );
00223
00224
00225 _pathi[_itmplen]='/';
00226 strcpy(&_pathi[_itmplen+1],MED_NOM_NOD);
00227 if ( _MEDattributeNumRdByName(fid,_pathi,MED_NOM_NBR,MED_INTERNAL_INT,
00228 ( unsigned char * const) &_nbratt ) < 0 ) {
00229 MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_MESH_MSG);
00230 SSCRUTE(_pathi);SSCRUTE(MED_NOM_NBR);SSCRUTE(MED_GET_ENTITY_TYPENAME[enttype+1]);
00231 goto ERROR;
00232 }
00233
00234 if ( _MEDattributeNumRdByName(fid,_pathi,MED_NOM_TTI,MED_INTERNAL_INT,
00235 ( unsigned char * const) &_nbtype ) < 0 ) {
00236 MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_MESH_MSG);
00237 SSCRUTE(_pathi);SSCRUTE(MED_NOM_TTI);SSCRUTE(MED_GET_ENTITY_TYPENAME[enttype+1]);
00238 goto ERROR;
00239 }
00240 H5Adelete_by_name( fid, _pathi, MED_NOM_NBR, H5P_DEFAULT );
00241 H5Adelete_by_name( fid, _pathi, MED_NOM_TTI, H5P_DEFAULT );
00242 H5Arename_by_name( fid, _pathi, MED_NOM_TAI, MED_NOM_NBR, H5P_DEFAULT);
00243
00244
00245 ++_nbratt;
00246 strcpy(&_pathi[_itmplen+1],MED_NOM_INN);
00247 if ( _MEDattributeNumWrByName(fid,_pathi,MED_NOM_NBR,MED_INTERNAL_INT,
00248 (const unsigned char * const) &_nbtype ) < 0 ) {
00249 MED_ERR_(_ret,MED_ERR_WRITE,MED_ERR_ATTRIBUTE,MED_ERR_MESH_MSG);
00250 SSCRUTE(_pathi);SSCRUTE(MED_NOM_NBR);SSCRUTE(MED_GET_ENTITY_TYPENAME[enttype+1]);
00251 goto ERROR;
00252 }
00253
00254
00255 strcpy(&_pathi[_itmplen+1],MED_NOM_IFN);
00256 if ( _MEDattributeNumWrByName(fid,_pathi,MED_NOM_NBR,MED_INTERNAL_INT,
00257 (const unsigned char * const) &_nbratt ) < 0 ) {
00258 MED_ERR_(_ret,MED_ERR_WRITE,MED_ERR_ATTRIBUTE,MED_ERR_MESH_MSG);
00259 SSCRUTE(_pathi);SSCRUTE(MED_NOM_NBR);SSCRUTE(MED_GET_ENTITY_TYPENAME[enttype+1]);
00260 goto ERROR;
00261 }
00262
00263 }
00264
00265
00266 if ( !strcmp(_idatasetname,MED_NOM_NOM) ) {
00267
00268 fprintf(stdout," >>> Normalisation des noms optionnels sur les entites [%s] du maillage [%s] \n",
00269 MED_GET_ENTITY_TYPENAME[enttype+1],meshname);
00270
00271 _pathi[_itmplen]='/';
00272 strcpy(&_pathi[_itmplen+1],_idatasetname);
00273
00274
00275
00276
00277 if ( _MEDattributeNumRdByName(fid,_pathi,MED_NOM_NBR,MED_INTERNAL_INT,
00278 ( unsigned char * const) &_nbratt ) < 0 ) {
00279 MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_MESH_MSG);
00280 SSCRUTE(_pathi);SSCRUTE(MED_NOM_NBR);SSCRUTE(MED_GET_ENTITY_TYPENAME[enttype+1]);
00281 goto ERROR;
00282 }
00283
00284 _pathi[_itmplen]='\0';
00285
00286 MED_ERR_EXIT_IF( MAJ_236_300_string_datasets( fid, _pathi, _idatasetname,MED_TAILLE_PNOM,
00287 MED_SNAME_SIZE,_nbratt)
00288 < 0, MED_ERR_CALL, MED_ERR_API, "MAJ_236_300_string_datasets");
00289
00290 }
00291
00292 _pathi[_itmplen]='/';
00293 strcpy(&_pathi[_itmplen+1],_idatasetname);
00294
00295
00296
00297
00298
00299
00300
00301 if ( _MEDattributeNumWrByName(fid,_pathi,MED_NOM_CGT,MED_INTERNAL_INT,
00302 (const unsigned char * const) &_1 ) < 0 ) {
00303 MED_ERR_(_ret,MED_ERR_WRITE,MED_ERR_ATTRIBUTE,MED_ERR_MESH_MSG);
00304 SSCRUTE(_pathi);SSCRUTE(MED_GET_ENTITY_TYPENAME[enttype+1]);
00305 goto ERROR;
00306 }
00307
00308 _pathi[_itmplen]='\0';
00309
00310 }
00311
00312
00313
00314
00315 if ( _MEDattributeNumWrByName(fid,_pathi,MED_NOM_CGS,MED_INTERNAL_INT,
00316 (const unsigned char * const) &_cgs ) < 0 ) {
00317 MED_ERR_(_ret,MED_ERR_WRITE,MED_ERR_ATTRIBUTE,MED_ERR_MESH_MSG);
00318 SSCRUTE(_pathi);SSCRUTE(MED_GET_ENTITY_TYPENAME[enttype+1]);
00319 SSCRUTE(MED_NOM_CGS);
00320 goto ERROR;
00321 }
00322
00323
00324 _ret=0;
00325 ERROR:
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335 return (int) _ret;
00336 }