void MAJ_236_300_champs(med_idt fid) { med_err lret,ret; /* med_idt _datagroup=0; */ med_field_type typcha; char nomcha [MED_NAME_SIZE+1]=""; char _meshname [MED_NAME_SIZE+1]=""; char _dtunit [MED_SNAME_SIZE+1]=""; char *comp= NULL, *unit= NULL; med_int ncomp,ncha; med_int _ncstp=0; med_bool _local=MED_FALSE; htri_t _datasetexist; char _pathi[MED_TAILLE_CHA+1+MED_NAME_SIZE+1]=MED_CHA; char _pathf[MED_TAILLE_CHA+2+MED_NAME_SIZE+1]="/CHA_/"; char _pathtmp[MED_TAILLE_CHA+3]="/CHA__/"; int i,j; char nomlien[MED_NAME_SIZE+1]=""; char * lien = NULL; med_int nln,nval; med_int _nloc,_intgeotype,_sdim; char _pathloc[MED_TAILLE_GAUSS+MED_NAME_SIZE+1]=MED_GAUSS; med_int _npar,_numdt,_numit; char _pathpari[MED_TAILLE_NUM_DATA+MED_NAME_SIZE+1+2*MED_MAX_PARA+1+1]=MED_NUM_DATA; char _pathparf[MED_TAILLE_NUM_DATA+MED_NAME_SIZE+1+2*MED_MAX_PARA+1+1]=MED_NUM_DATA; int _pathparlen; med_size _n=0; char _cpstnamei[2*MED_MAX_PARA+1]=""; char _cpstnamef[2*MED_MAX_PARA+1]=""; char _uniname[MED_SNAME_SIZE+1]=""; /* hid_t _lac_plist_id; */ hid_t _lcp_plist_id; hid_t _ocp_plist_id; med_bool _createunt = MED_TRUE; MAJ_version_num(fid,2,3,6); /* MAJ des varaibles scalaires */ _npar = MEDnParameter(fid); if (_npar > 0) { fprintf(stdout," >>> Normalisation des paramètres scalaires\n"); _pathparf[MED_TAILLE_NUM_DATA-2]='_'; /* _lac_plist_id = H5Pcreate( H5P_LINK_ACCESS ); */ _ocp_plist_id = H5Pcreate( H5P_OBJECT_COPY ); _lcp_plist_id = H5Pcreate( H5P_LINK_CREATE ); H5Pset_create_intermediate_group( _lcp_plist_id, 1 ); H5Pset_copy_object( _ocp_plist_id, H5O_COPY_SHALLOW_HIERARCHY_FLAG); } for (i=0 ; i < _npar ; i++ ) { MED_ERR_EXIT_IF (_MEDobjectGetName(fid, _pathpari ,i, &_pathpari[MED_TAILLE_NUM_DATA]) < 0, MED_ERR_ACCESS,MED_ERR_DATAGROUP,_pathpari); strcpy(&_pathparf[MED_TAILLE_NUM_DATA],&_pathpari[MED_TAILLE_NUM_DATA]); /* SSCRUTE(_pathparf); */ /* SSCRUTE(_pathpari); */ /*Copie le group avec ses attributs et les objets de premier niveau.*/ ret = H5Ocopy(fid,_pathpari,fid,_pathparf,_ocp_plist_id,_lcp_plist_id); /* ret = H5Lcopy(fid,_pathpari,fid,_pathparf,_lcp_plist_id,_lac_plist_id); */ EXIT_IF(ret < 0,"Copie du datagroup",_pathpari); _pathparlen=strlen(_pathpari); _pathpari[_pathparlen]='/';_pathparf[_pathparlen]='/'; ++_pathparlen; _pathpari[_pathparlen]='\0';_pathparf[_pathparlen]='\0'; /* SSCRUTE(_pathparf); */ /* SSCRUTE(_pathpari); */ ret =_MEDnObjects(fid,_pathpari, &_n); MED_ERR_EXIT_IF( (ret == (MED_ERR_COUNT + MED_ERR_DATAGROUP)), MED_ERR_COUNT,MED_ERR_PARAMETER,_pathpari); for (j=0 ; j < _n ; ++j ) { MED_ERR_EXIT_IF (_MEDobjectGetName(fid, _pathpari ,j, &_pathpari[_pathparlen]) < 0, MED_ERR_ACCESS,MED_ERR_DATAGROUP,_pathpari); MED_ERR_EXIT_IF (_MEDattributeNumRdByName(fid,_pathpari,MED_NOM_NOR, MED_INTERNAL_INT,(unsigned char * const ) &_numit) < 0, MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_NOM_NOR); MED_ERR_EXIT_IF (_MEDattributeNumRdByName(fid,_pathpari,MED_NOM_NDT, MED_INTERNAL_INT,(unsigned char * const ) &_numdt) < 0, MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_NOM_NDT); MED_ERR_EXIT_IF (_MEDattributeStringRdByName(fid,_pathpari,MED_NOM_UNI, MED_SNAME_SIZE,_uniname) < 0, MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_NOM_NDT); _MEDgetComputationStepName(MED_SORT_DTIT,_numdt,_numit,&_pathparf[_pathparlen]); /* strcat(_pathpari,"/"); */ /* strcat(_pathparf,"/"); */ /* SSCRUTE(_pathparf); */ /* SSCRUTE(_pathpari); */ /* ret = H5Ocopy(fid,_pathpari,fid,_pathparf,_ocp_plist_id,_lcp_plist_id); */ /* ret = H5Lcopy(fid,_pathpari,fid,_pathparf,_lcp_plist_id,_lac_plist_id); */ /* H5Eprint1(stderr); */ /* EXIT_IF(ret < 0,"Copie d'une étape de calcul du paramètre scalaire ",_pathpari); */ /*On modifie temporairement _pathpari pour pointer dans _pathparf*/ _pathpari[MED_TAILLE_NUM_DATA-2]='_'; /* SSCRUTE(_pathparf); */ /* SSCRUTE(_pathpari); */ ret = H5Gmove(fid, _pathpari, _pathparf ); EXIT_IF(ret < 0,"Renommage de l'étape de calcul",_pathpari); _pathpari[MED_TAILLE_NUM_DATA-2]='A'; MED_ERR_EXIT_IF(H5Adelete_by_name( fid, _pathparf, MED_NOM_UNI, H5P_DEFAULT ) < 0, MED_ERR_DELETE,MED_ERR_ATTRIBUTE,_pathparf); _pathparf[_pathparlen]='\0'; _pathpari[_pathparlen]='\0'; if ( _createunt ) { MED_ERR_EXIT_IF (_MEDattributeStringWrByName(fid,_pathparf,MED_NOM_UNT, MED_SNAME_SIZE,_uniname) < 0, MED_ERR_WRITE,MED_ERR_ATTRIBUTE,MED_NOM_UNT); _createunt = MED_FALSE; } } _createunt = MED_TRUE; _pathpari[MED_TAILLE_NUM_DATA]='\0'; } if ( _npar > 0 ) { _pathpari[MED_TAILLE_NUM_DATA]='\0'; _pathparf[MED_TAILLE_NUM_DATA]='\0'; MED_ERR_EXIT_IF ( H5Ldelete(fid,_pathpari,H5P_DEFAULT) < 0 , MED_ERR_DELETE,MED_ERR_LINK,_pathpari); ret = H5Gmove(fid, _pathparf, _pathpari ); EXIT_IF(ret < 0,"Renommage du group de paramètres scalaires",_pathparf); } /* MAJ des localisations */ _nloc = MEDnLocalization(fid); /* ISCRUTE(_nloc); */ if (_nloc > 0) fprintf(stdout," >>> Normalisation des localisations des points d'intégration\n"); for (i=0 ; i < _nloc ; i++ ) { /* SSCRUTE(_pathloc); */ MED_ERR_EXIT_IF (_MEDobjectGetName(fid, _pathloc ,i, &_pathloc[MED_TAILLE_GAUSS]) < 0, MED_ERR_ACCESS,MED_ERR_DATAGROUP,_pathloc); /* SSCRUTE(_pathloc); */ MED_ERR_EXIT_IF (_MEDattributeNumRdByName(fid,_pathloc,MED_NOM_GEO, MED_INTERNAL_INT,(unsigned char * const ) &_intgeotype) < 0, MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_NOM_GEO); _sdim = (_intgeotype/100); MED_ERR_EXIT_IF (_MEDattributeNumWrByName(fid,_pathloc,MED_NOM_DIM, MED_INTERNAL_INT,(const unsigned char * const) &_sdim) < 0, MED_ERR_WRITE,MED_ERR_ATTRIBUTE,MED_NOM_DIM); MED_ERR_EXIT_IF ( _MEDattributeStringWrByName(fid,_pathloc,MED_NOM_INM,MED_NAME_SIZE,"") < 0, MED_ERR_WRITE,MED_ERR_ATTRIBUTE,MED_NOM_INM); _pathloc[MED_TAILLE_GAUSS]='\0'; } /* MAJ des liens */ nln = MEDnLink(fid); if (nln > 0) fprintf(stdout," >>> Normalisation des liens\n"); for (i=1 ; i <= nln ; i++ ) { ret = MEDlinkInfo(fid, i, nomlien, &nval); EXIT_IF(ret,"Erreur a la demande d'information sur le lien",NULL); /* printf("\t- Lien n°%i de nom |%s| et de taille "IFORMAT"\n",i,nomlien,nval); */ lien = (char *) malloc((nval+1)*sizeof(char)); EXIT_IF(lien == NULL,NULL,NULL); ret = MEDlinkRd(fid, nomlien, lien ); EXIT_IF(ret,"Erreur a la lecture du lien : ",nomlien); MAJ_version_num(fid,3,0,8); ret = MED30linkWr(fid,nomlien,lien); EXIT_IF(ret,"Erreur a l'écrtiure du lien : ",nomlien); MAJ_version_num(fid,2,3,6); lien[nval] = '\0'; /* printf("\t\t|%s|\n\n",lien); */ free(lien); } /* combien de champs dans le fichier */ ncha = MEDnField(fid); EXIT_IF(ncha < 0,"lors de la lecture du nombre de champs",NULL); /* MAJ des champs */ for (i =0;i<ncha;i++) { lret = 0; /* Lecture du nombre de composantes */ ncomp = MEDfieldnComponent(fid,i+1); if (ncomp < 0) { MESSAGE("Erreur à la lecture du nombre de composantes : "); ISCRUTE(ncomp); exit(1); } /* Lecture du type du champ, des noms des composantes et du nom de l'unité*/ comp = (char*) malloc(ncomp*MED_SNAME_SIZE+1); EXIT_IF(comp == NULL,NULL,NULL); unit = (char*) malloc(ncomp*MED_SNAME_SIZE+1); EXIT_IF(unit == NULL,NULL,NULL); /* ret = MED231champInfoEtRen(fid,i+1,nomcha,&typcha,comp,unit,ncomp); */ ret = MEDfieldInfo(fid,i+1,nomcha,_meshname,&_local,&typcha,comp,unit,_dtunit,&_ncstp); MED_ERR_EXIT_IF(ret,MED_ERR_ACCESS,MED_ERR_FIELD,nomcha); /* creation du champ destination */ MAJ_version_num(fid,3,0,8); EXIT_IF( H5Gmove(fid, _pathi, _pathtmp ) < 0,"Switch to ",_pathtmp); _datasetexist=H5Lexists( fid, _pathf, H5P_DEFAULT ); if (_datasetexist ) { EXIT_IF( (H5Gmove(fid, _pathf, _pathi ) < 0) ,"Switch to ",_pathi); } MED_ERR_EXIT_IF( MEDfieldCr(fid,nomcha,typcha,ncomp,comp,unit,_dtunit,_meshname ) < 0, MED_ERR_CREATE,MED_ERR_FIELD,_pathf); EXIT_IF( H5Gmove(fid, _pathi , _pathf ) < 0,"Switch to ",_pathf); EXIT_IF( H5Gmove(fid, _pathtmp, _pathi ) < 0,"Switch to ",_pathi); MAJ_version_num(fid,2,3,6); free(comp); free(unit); lret = MAJ_236_300_fieldOnEntity( fid, nomcha, _meshname, typcha, ncomp, MED_NODE,_ncstp, _pathi, _pathf); if (lret != 0) { MESSAGE("Erreur à la lecture des champs aux noeuds "); exit(1); } lret = MAJ_236_300_fieldOnEntity( fid, nomcha, _meshname, typcha, ncomp, MED_CELL,_ncstp, _pathi, _pathf); if (lret != 0) { MESSAGE("Erreur à la lecture des champs aux mailles "); exit(1); } lret = MAJ_236_300_fieldOnEntity( fid, nomcha, _meshname, typcha, ncomp, MED_DESCENDING_FACE,_ncstp, _pathi, _pathf); if (lret != 0) { MESSAGE("Erreur à la lecture des champs aux faces "); exit(1); } lret = MAJ_236_300_fieldOnEntity( fid, nomcha, _meshname, typcha, ncomp, MED_DESCENDING_EDGE,_ncstp, _pathi, _pathf); if (lret != 0) { MESSAGE("Erreur à la lecture des champs aux aretes "); exit(1); } lret = MAJ_236_300_fieldOnEntity( fid, nomcha, _meshname, typcha, ncomp, MED_NODE_ELEMENT,_ncstp, _pathi, _pathf); if (lret != 0) { MESSAGE("Erreur à la lecture des champs aux aretes "); exit(1); } } _datasetexist=H5Lexists( fid, _pathf, H5P_DEFAULT ); if (_datasetexist ) { EXIT_IF( (H5Ldelete(fid,_pathi, H5P_DEFAULT) < 0) ,"Delete ",_pathi); EXIT_IF( (H5Gmove(fid, _pathf, _pathi ) < 0) ,"Switch to ",_pathf); } }
void _MEDequivalenceCorrespondenceSizeInfo236( int dummy, ...) { med_err _ret=-1,_err=-1; char _path[MED_TAILLE_MAA+MED_TAILLE_EQS+2*MED_TAILLE_NOM+1+ 2*MED_TAILLE_NOM_ENTITE+1+1]=MED_MAA; char _entgeoname[2*MED_TAILLE_NOM_ENTITE+2]=""; med_size _nocstpncorrespondence=0; med_int _intentitytype; med_int _intgeotype; int _num; MED_VARGS_DECL(const, med_idt , , fid ); MED_VARGS_DECL(const, char * , const , meshname ); MED_VARGS_DECL(const, char * , const , equivname); MED_VARGS_DECL(const, med_int , , numdt ); MED_VARGS_DECL(const, med_int , , numit ); MED_VARGS_DECL(const, int , , corit ); MED_VARGS_DECL(, med_entity_type *, const , entitype ); MED_VARGS_DECL(, med_geometry_type*, const , geotype ); MED_VARGS_DECL(, med_int *, const , nentity ); MED_VARGS_DECL(, med_err * ,, fret ); va_list params; va_start(params,dummy); MED_VARGS_DEF(const, med_idt , , fid ); MED_VARGS_DEF(const, char * , const , meshname ); MED_VARGS_DEF(const, char * , const , equivname); MED_VARGS_DEF(const, med_int , , numdt ); MED_VARGS_DEF(const, med_int , , numit ); MED_VARGS_DEF(const, int , , corit ); MED_VARGS_DEF(, med_entity_type *, const , entitype ); MED_VARGS_DEF(, med_geometry_type*, const , geotype ); MED_VARGS_DEF(, med_int *, const , nentity ); MED_VARGS_DEF(, med_err * ,, fret ); _num = corit -1; if ( (numdt != MED_NO_DT) || (numit != MED_NO_IT) ) { MED_ERR_(_ret,MED_ERR_INVALID,MED_ERR_PARAMETER,""); ISCRUTE(numdt);ISCRUTE(numit); goto ERROR; } /* * On inhibe le gestionnaire d'erreur */ _MEDmodeErreurVerrouiller(); strcat(_path,meshname); strcat(_path,MED_EQS); strcat(_path,equivname); strcat(_path,"/"); /* * On recupere le nom de <entitype>[.<geotype>] */ if ( _MEDobjectGetName(fid, _path ,_num, &_path[strlen(_path)]) < 0 ) { MED_ERR_(_ret,MED_ERR_ACCESS,MED_ERR_DATAGROUP,_path);ISCRUTE_int(corit); goto ERROR; } if ( _MEDattributeNumRdByName(fid, _path, MED_NOM_ENT,MED_INTERNAL_INT,(unsigned char *)&_intentitytype) < 0 ) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_NOM_ENT); SSCRUTE(_path);ISCRUTE(_intentitytype);goto ERROR; } *entitype = (med_entity_type) _intentitytype; if ( _MEDattributeNumRdByName(fid, _path,MED_NOM_GEO,MED_INTERNAL_INT,(unsigned char *)&_intgeotype) < 0) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_NOM_GEO); SSCRUTE(_path);ISCRUTE(_intgeotype);goto ERROR; } *geotype = (med_geometry_type) _intgeotype; if ( _MEDattributeNumRdByName(fid, _path, MED_NOM_NBR,MED_INTERNAL_INT, (unsigned char *) nentity) < 0) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_EQUIVALENCE_MSG); SSCRUTE(_path);SSCRUTE(MED_NOM_NBR);ISCRUTE(*nentity); goto ERROR; } _ret = 0; ERROR: va_end(params); *fret = _ret; return; }
void _MEDfieldnValue236(int dummy, ...) { med_int _ret =-1; med_int _nprofile = 0; med_int _n = 0; med_int _profilearraysize = 0,_nvaluesperentity=0; med_int _nintegrationpoint= 0; med_bool _anyprofile = MED_FALSE; med_geometrie_element _locgeotype = 0; med_int _intlocgeotype = 0; med_int _nvaluesperentityfromloc=0; int _dummy =0; char _localizationname [MED_TAILLE_NOM+1] = ""; char _tmpprofilename [MED_NAME_SIZE+1] = "", *_profilename=0; char _path [MED_LOCALIZATION_GRP_SIZE+MED_TAILLE_NOM+1]= MED_LOCALIZATION_GRP; char _geotype [MED_TAILLE_NOM_ENTITE+1] = ""; MED_VARGS_DECL(const, med_idt , , fid ); MED_VARGS_DECL(const, char * , const , fieldname ); MED_VARGS_DECL(const, med_int , , numdt ); MED_VARGS_DECL(const, med_int , , numit ); MED_VARGS_DECL(const, med_entity_type , , entitytype ); MED_VARGS_DECL(const, med_geometry_type , , geotype ); MED_VARGS_DECL(, char *, const , profilename ); MED_VARGS_DECL(const, int , , profileit ); MED_VARGS_DECL(const, med_storage_mode , , storagemode ); MED_VARGS_DECL(, med_int *, const , profilesize ); MED_VARGS_DECL(, char *, const , localizationname ); MED_VARGS_DECL(, med_int *, const , nintegrationpoint ); MED_VARGS_DECL(, med_int * ,, fret ); va_list params; va_start(params,dummy); MED_VARGS_DEF(const, med_idt , , fid ); MED_VARGS_DEF(const, char * , const , fieldname ); MED_VARGS_DEF(const, med_int , , numdt ); MED_VARGS_DEF(const, med_int , , numit ); MED_VARGS_DEF(const, med_entity_type , , entitytype ); MED_VARGS_DEF(const, med_geometry_type , , geotype ); MED_VARGS_DEF(, char *, const , profilename ); MED_VARGS_DEF(const, int , , profileit ); MED_VARGS_DEF(const, med_storage_mode , , storagemode ); MED_VARGS_DEF(, med_int *, const , profilesize ); MED_VARGS_DEF(, char *, const , localizationname ); MED_VARGS_DEF(, med_int *, const , nintegrationpoint ); MED_VARGS_DEF(, med_int * ,, fret ); /* * On inhibe le gestionnaire d'erreur HDF 5 */ _MEDmodeErreurVerrouiller(); NOFINALBLANK(fieldname,ERROR); if ( (profileit != 1) && (profileit != -1)) { MED_ERR_(_ret,MED_ERR_INVALID,MED_ERR_PARAMETER,MED_ERR_VALUE_MSG); ISCRUTE_int(profileit);goto ERROR; } /* * Cette appel effectue l'appel à _MEDfieldComputingStepCheck236 */ _MEDfieldnProfile236(_dummy,fid,fieldname,numdt,numit,entitytype,geotype, &_tmpprofilename,&_localizationname,&_nprofile ); if ( _nprofile < 0 ) { MED_ERR_(_ret,MED_ERR_CALL,MED_ERR_API,"_MEDfieldnProfile236"); goto ERROR; } /* REM: MEDnVal prend en compte le nombre de points de Gauss, ce qui n'est pas le cas de MEDfieldnValue */ if ( (_n = MEDnVal(fid, (char *) fieldname,entitytype,geotype, numdt,numit,MED_NOREF,(med_mode_profil) storagemode) ) < 0 ) { MED_ERR_(_ret,MED_ERR_CALL,MED_ERR_API,"MEDnVal"); goto ERROR; } /* * Lecture de la taille du profil (eventuellement MED_ALLENTITIES_PROFILE) */ /* REM: (profileit < 0 ) signifie que l'on nous a fourni <profilename> */ if ( profileit < 0 ) { if ( !strlen(profilename)) { _profilename = MED_NOPFL; } else { if ( strcmp(_tmpprofilename,profilename) ) { MED_ERR_(_ret,MED_ERR_INVALID,MED_ERR_PARAMETER,profilename); SSCRUTE(_tmpprofilename); goto ERROR; } _profilename=profilename; _anyprofile=MED_TRUE; } } else { strncpy(profilename,_tmpprofilename,MED_TAILLE_NOM+1); profilename[MED_TAILLE_NOM]='\0'; _profilename=profilename; if ( strlen(profilename)) _anyprofile=MED_TRUE; } if ( _anyprofile ) { if ( (_profilearraysize=MEDprofileSizeByName(fid, _profilename)) < 0) { MED_ERR_(_ret,MED_ERR_CALL,MED_ERR_API,MED_ERR_FIELD_MSG); SSCRUTE(fieldname); SSCRUTE(_profilename); SSCRUTE("MEDprofileSizeByName");goto ERROR; } } /* * Lecture du nombre de points d'intégration. */ strncpy(localizationname,_localizationname,MED_TAILLE_NOM+1); localizationname[MED_TAILLE_NOM]='\0'; /* Vérification de la cohérence du nombre de valeurs pas entité */ if (entitytype == MED_NODE_ELEMENT ) { if ( strlen( _localizationname) ) { MED_ERR_(_ret,MED_ERR_NOTEQUAL,MED_ERR_PARAMETER,_localizationname); SSCRUTE(MED_NO_LOCALIZATION);ISCRUTE_int(entitytype);goto ERROR; } _nvaluesperentityfromloc = geotype % 100; } else if (! strcmp(_localizationname,MED_GAUSS_ELNO)) { /* Les points de Gauss sont d"finis sur les noeuds de l'element (mot cle) */ /* le nombre de points de Gauss est egal au nombre de noeuds de l'element */ _nvaluesperentityfromloc = geotype % 100; } else if ( strlen(_localizationname) ) { strcat(_path,_localizationname); if ( _MEDattributeNumRdByName(fid, _path, MED_NOM_NBR,MED_INTERNAL_INT,(unsigned char *) &_nvaluesperentityfromloc) < 0 ) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE, MED_ERR_NAME_MSG ); SSCRUTE(MED_NOM_NBR);SSCRUTE(_path); ISCRUTE(_nvaluesperentityfromloc);goto ERROR; } if ( _MEDattributeNumRdByName(fid, _path, MED_NOM_GEO, MED_INTERNAL_INT,(unsigned char *) &_intlocgeotype) < 0 ) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE, MED_ERR_NAME_MSG ); SSCRUTE(MED_NOM_GEO);SSCRUTE(_path); ISCRUTE(_intlocgeotype);goto ERROR; } _locgeotype = (med_geometry_type) _intlocgeotype; if ( _locgeotype != geotype ) { MED_ERR_(_ret,MED_ERR_NOTEQUAL,MED_ERR_ATTRIBUTE,MED_ERR_LOCALIZATION_MSG); SSCRUTE(_localizationname);SSCRUTE(MED_NOM_GEO);ISCRUTE_int(_locgeotype);ISCRUTE_int(geotype); goto ERROR; } } else { _nvaluesperentityfromloc = 1; } /* Pour effectuer la vérification suivante (incohérence dans le fichier suite à une maj de la localisation ou du champ sans prise en compte d'un nombre de points d'intégration différent), il faudrait lire l'attribut MED_NOM_NGA sur le maillage par défaut du champ*/ /* Pour celà il faut soit developper une nouvelle routine soit utiliser MEDpasdetempsInfo mais qui est itérative*/ /* if ( _nvaluesperentityfromloc != _nvaluesperentity ) { */ /* MED_ERR_(_ret,MED_ERR_NOTEQUAL,MED_ERR_ATTRIBUTE,MED_ERR_LOCALIZATION_MSG); */ /* SSCRUTE(_localizationname);SSCRUTE(MED_NOM_GEO);ISCRUTE(_nvaluesperentityfromloc); */ /* ISCRUTE(_nvaluesperentity);goto ERROR; */ /* } */ *nintegrationpoint = _nvaluesperentityfromloc; _n/=_nvaluesperentityfromloc; /*Rectification de la valeur 2.3.6 qui prend en compte le nombre de points d'intégration*/ if (_anyprofile) *profilesize=_profilearraysize; else *profilesize=_n; _ret = _n; ERROR: va_end(params); *fret = _ret; return; }
med_err _MEDconvertStringDatasets(med_idt id, const char *lname, const H5L_info_t *linfo, visitordatas *data) { med_err _ret=-1,_err=-1; med_idt _gid=0; H5O_info_t oinfo; char _tmpbuff[MAX_LEN_PATH+1]=""; int _tmpbuffsize=0; med_int _nbratt=0; #ifdef _DEBUG_ SSCRUTE(lname); #endif if (!strcmp(lname,".")) return 0; switch ( (*linfo).type ) { case H5L_TYPE_SOFT: oinfo.type=(H5O_type_t) H5G_LINK; break; case H5L_TYPE_HARD: if ( H5Oget_info_by_name( id, lname, &oinfo, H5P_DEFAULT ) <0) { MED_ERR_(_ret,MED_ERR_CALL,MED_ERR_API,"H5Oget_info_by_name"); SSCRUTE(lname); } break; case H5L_TYPE_EXTERNAL: case H5L_TYPE_ERROR: default: MED_ERR_(_ret,MED_ERR_UNRECOGNIZED,MED_ERR_HDFTYPE,lname); ISCRUTE_int((*linfo).type); goto ERROR; break; } switch ( oinfo.type ) { case H5G_GROUP: case H5G_LINK: break; case H5G_DATASET: strcat(_tmpbuff,lname); _tmpbuffsize=strlen(_tmpbuff); /* Ce traitement est spécifique aux datatsets présents dans les familles */ /* SSCRUTE(_tmpbuff); */ /* SSCRUTE(&_tmpbuff[_tmpbuffsize-3]); */ if ( strcmp(&_tmpbuff[_tmpbuffsize-3],MED_NOM_NOM) ) break; _tmpbuff[_tmpbuffsize-4]='\0'; /* SSCRUTE(_tmpbuff); */ /* * Lecture de l'attribut MED_NOM_NBR sur le dataset */ if ( _MEDattributeNumRdByName(id,_tmpbuff,MED_NOM_NBR,MED_INTERNAL_INT, ( unsigned char * const) &_nbratt ) < 0 ) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_NOM_NBR); goto ERROR; } /* ISCRUTE(_nbratt); */ _err=MAJ_236_300_string_datasets( data->gid2, _tmpbuff, MED_NOM_NOM, MED_TAILLE_LNOM, MED_LNAME_SIZE,_nbratt); MED_ERR_EXIT_IF( _err < 0, MED_ERR_CALL, MED_ERR_API, "MAJ_236_300_string_datasets"); _tmpbuff[_tmpbuffsize-4]='/'; _err = H5Adelete_by_name( data->gid2, _tmpbuff, MED_NOM_NBR, H5P_DEFAULT ); MED_ERR_EXIT_IF( _err < 0, MED_ERR_DELETE, MED_ERR_ATTRIBUTE, "MED_NOM_NBR"); break; case H5G_TYPE: default: MED_ERR_(_ret,MED_ERR_UNRECOGNIZED,MED_ERR_HDFTYPE,lname); goto ERROR; } _ret = 0; ERROR: return _ret; }