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 _MEDfieldInfoByName236(int dummy, ...) { med_err _ret=-1,_err=-1; med_idt _fieldgid=0,_meshgid=0,_linkgid=0; char _fieldpath[MED_TAILLE_CHA+MED_TAILLE_NOM+1]=MED_CHA; char _meshpath [MED_TAILLE_MAA+MED_TAILLE_NOM+1]=MED_MAA; char _linkpath [MED_TAILLE_LIENS+MED_TAILLE_NOM+1]=MED_LIENS; med_size _ncstp=0; med_int _n=0; med_int _intfieldtype=0; char _meshrefpath236[(2*MED_TAILLE_NOM_ENTITE+1)+1+ (2*MED_MAX_PARA)+1]=""; MED_VARGS_DECL(const, med_idt , , fid ); MED_VARGS_DECL(const, char * , const , fieldname ); MED_VARGS_DECL(, char *, const , meshname ); MED_VARGS_DECL(, med_bool *, const , localmesh ); MED_VARGS_DECL(, med_field_type *, const , fieldtype ); MED_VARGS_DECL(, char *, const , componentname ); MED_VARGS_DECL(, char *, const , componentunit ); MED_VARGS_DECL(, char *, const , dtunit ); MED_VARGS_DECL(, med_int *, const , ncstp ); 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 , fieldname ); MED_VARGS_DEF(, char *, const , meshname ); MED_VARGS_DEF(, med_bool *, const , localmesh ); MED_VARGS_DEF(, med_field_type *, const , fieldtype ); MED_VARGS_DEF(, char *, const , componentname ); MED_VARGS_DEF(, char *, const , componentunit ); MED_VARGS_DEF(, char *, const , dtunit ); MED_VARGS_DEF(, med_int *, const , ncstp ); MED_VARGS_DEF(, med_err * ,, fret ); /* * On inhibe le gestionnaire d'erreur HDF 5 */ _MEDmodeErreurVerrouiller(); strcat(_fieldpath,fieldname); if ((_fieldgid = _MEDdatagroupOuvrir(fid,_fieldpath)) < 0) { MED_ERR_(_ret,MED_ERR_OPEN,MED_ERR_DATAGROUP,_fieldpath); goto ERROR; } /* Lecture de l'attribut MED_NOM_NCO */ if ( _MEDattrEntierLire(_fieldgid,MED_NOM_NCO,&_n) < 0) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_NOM_NCO); SSCRUTE(_fieldpath);goto ERROR; } /* Lecture de l'attribut MED_NOM_TYP */ if ( _MEDattrEntierLire(_fieldgid,MED_NOM_TYP,&_intfieldtype) < 0) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_FIELD_MSG); SSCRUTE(fieldname);SSCRUTE(MED_NOM_TYP); goto ERROR; } *fieldtype = (med_field_type) (_intfieldtype); /* * Les infos sur les composantes du champ */ if (_MEDattrStringLire(_fieldgid,MED_NOM_NOM,_n*MED_TAILLE_PNOM, componentname) < 0) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_FIELD_MSG); SSCRUTE(fieldname);SSCRUTE(_fieldpath);SSCRUTE(MED_NOM_NOM); SSCRUTE(componentname);goto ERROR; } if (_MEDattrStringLire(_fieldgid,MED_NOM_UNI,_n*MED_TAILLE_PNOM, componentunit) < 0) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_FIELD_MSG); SSCRUTE(fieldname);SSCRUTE(_fieldpath);SSCRUTE(MED_NOM_UNI); SSCRUTE(componentunit);goto ERROR; } /* * On recupere le nom du premier couple (entitytype,geotype) */ if ( _MEDobjectGetName(_fieldgid, "." , 0, _meshrefpath236) < 0 ) { MED_ERR_(_ret,MED_ERR_ACCESS,MED_ERR_DATAGROUP,"."); SSCRUTE(_meshrefpath236); goto ERROR; } /* Nombre d'étapes de calcul * La gestion d'une incohérence sur le nombre de séquences de calcul par couple (entitytype,geotype) * se fait à partir des appels : * MEDfieldnProfile,MEDfieldnValue,MEDfieldnValueWithProfile */ if ( (_err=_MEDnObjects(_fieldgid,_meshrefpath236,&_ncstp)) <0) if ( _err == (MED_ERR_COUNT + MED_ERR_DATAGROUP) ) { MED_ERR_(_ret,MED_ERR_COUNT,MED_ERR_DATAGROUP,_fieldpath); goto ERROR; } *ncstp = (med_int) _ncstp; /* * On recupere le nom de maillage par défaut du premier couple (entitytype,geotype) * La gestion des erreurs multimaillage 2.3.6 se fait à partir des appels : * MEDfieldnProfile,MEDfieldnValue,MEDfieldnValueWithProfile */ strcat(_meshrefpath236,"/"); if ( _MEDobjectGetName(_fieldgid, _meshrefpath236 , 0, &_meshrefpath236[strlen(_meshrefpath236)]) < 0 ) { MED_ERR_(_ret,MED_ERR_ACCESS,MED_ERR_DATAGROUP,_meshrefpath236); goto ERROR; } /* Lecture de l'attribut MED_NOM_UNI */ if ( _MEDattributeStringRdByName(_fieldgid,_meshrefpath236,MED_NOM_UNI,MED_TAILLE_PNOM,dtunit) < 0) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_FIELD_MSG); SSCRUTE(fieldname);SSCRUTE(_meshrefpath236);SSCRUTE(MED_NOM_UNI); SSCRUTE(dtunit);goto ERROR; } /* Lecture de l'attribut MED_NOM_MAI */ if ( _MEDattributeStringRdByName(_fieldgid,_meshrefpath236,MED_NOM_MAI,MED_NAME_SIZE,meshname) < 0) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_FIELD_MSG); SSCRUTE(fieldname);SSCRUTE(_meshrefpath236);SSCRUTE(MED_NOM_MAI);SSCRUTE(meshname); goto ERROR; } /* Maillage local ou distant */ strcat(_meshpath,meshname); /* Le maillage est il distant */ if ( (_meshgid = _MEDdatagroupOuvrir(fid,_meshpath)) < 0) { /* Verifie que le maillage est bien référencé comme distant */ strcat(_linkpath,meshname); if ((_linkgid = _MEDdatagroupOuvrir(fid,_linkpath)) < 0) { /* MED_ERR_(_ret,MED_ERR_DOESNTEXIST,MED_ERR_MESH,MED_ERR_FIELD_MSG); */ /* SSCRUTE(fieldname);SSCRUTE(_meshpath);SSCRUTE(_linkpath); */ /* goto ERROR; */ *localmesh = MED_FALSE; } *localmesh = MED_FALSE; } else *localmesh = MED_TRUE; _ret = 0; ERROR: if (_fieldgid>0) if (_MEDdatagroupFermer(_fieldgid) < 0) { MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,_fieldpath); ISCRUTE_id(_fieldgid); } if (_meshgid>0) if (_MEDdatagroupFermer(_meshgid) < 0) { MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,_meshpath); ISCRUTE_id(_meshgid); } if (_linkgid>0) if (_MEDdatagroupFermer(_linkgid) < 0) { MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,_linkpath); ISCRUTE_id(_linkgid); } va_end(params); *fret = _ret; return; }
void _MEDfield23ComputingStepMeshInfo30(int dummy,...) { med_err _ret=-1; med_idt _gid=0,_datagroup1=0,_meshgid=0,_linkgid=0; int _num; char _datagroupname1[2*MED_MAX_PARA+1]=""; char _path [(MED_FIELD_GRP_SIZE+MED_NAME_SIZE+1)+2*MED_MAX_PARA+1]=MED_FIELD_GRP; char _meshpath [MED_MESH_GRP_SIZE+MED_NAME_SIZE+1]=MED_MESH_GRP; char _linkpath [MED_TAILLE_LIENS+MED_NAME_SIZE+1]=MED_LIENS; char _cstpname[2*MED_MAX_PARA+1]=""; MED_VARGS_DECL(const, med_idt , , fid ); MED_VARGS_DECL(const, char * , const , fieldname ); MED_VARGS_DECL(const, int , , csit ); MED_VARGS_DECL(, med_int *, const , numdt ); MED_VARGS_DECL(, med_int *, const , numit ); MED_VARGS_DECL(, med_float *, const , dt ); MED_VARGS_DECL(, med_int *, const , nmesh ); MED_VARGS_DECL(, char *, const , meshname ); MED_VARGS_DECL(, med_bool *, const , localmesh ); MED_VARGS_DECL(, med_int *, const , meshnumdt ); MED_VARGS_DECL(, med_int *, const , meshnumit ); 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 , fieldname ); MED_VARGS_DEF(const, int , , csit ); MED_VARGS_DEF(, med_int *, const , numdt ); MED_VARGS_DEF(, med_int *, const , numit ); MED_VARGS_DEF(, med_float *, const , dt ); MED_VARGS_DEF(, med_int *, const , nmesh ); MED_VARGS_DEF(, char *, const , meshname ); MED_VARGS_DEF(, med_bool *, const , localmesh ); MED_VARGS_DEF(, med_int *, const , meshnumdt ); MED_VARGS_DEF(, med_int *, const , meshnumit ); MED_VARGS_DEF(, med_err * ,, fret ); _num=csit-1; /* * On inhibe le gestionnaire d'erreur HDF 5 */ _MEDmodeErreurVerrouiller(); /* * On construit le nom du datagroup */ strcat(_path,fieldname); /* Lecture de l'attribut MED_NOM_MAI */ if ( _MEDattributeStringRdByName(fid,_path,MED_NOM_MAI,MED_NAME_SIZE,meshname) < 0) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_FIELD_MSG); SSCRUTE(_path);SSCRUTE(MED_NOM_MAI);SSCRUTE(meshname); goto ERROR; } /* * On recupere le nom de la séquence de calcul */ if ( _MEDobjectGetName(fid, _path ,_num, _cstpname) < 0 ) { MED_ERR_(_ret,MED_ERR_ACCESS,MED_ERR_DATAGROUP,_path);ISCRUTE_int(_num); goto ERROR; } strcat(_path,"/"); strcat(_path,_cstpname); if ((_gid = _MEDdatagroupOuvrir(fid,_path)) < 0) { MED_ERR_(_ret,MED_ERR_OPEN,MED_ERR_DATAGROUP,_path); goto ERROR; } /* * Lecture des attributs */ if (_MEDattrEntierLire(_gid,MED_NOM_NDT,(med_int*) numdt) < 0) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_NOM_NDT); SSCRUTE(_path);ISCRUTE(*numdt);goto ERROR; } if (_MEDattrFloatLire(_gid,MED_NOM_PDT,(med_float*) dt) < 0) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_NOM_PDT); SSCRUTE(_path);RSCRUTE(*dt);goto ERROR; } if (_MEDattrEntierLire(_gid,MED_NOM_NOR,(med_int*) numit) < 0) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_NOM_NOR); SSCRUTE(_path);ISCRUTE(*numit);goto ERROR; } if (_MEDattrEntierLire(_gid,MED_NOM_RDT,(med_int*) meshnumdt) < 0) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_NOM_RDT); SSCRUTE(_path);ISCRUTE(*meshnumdt);goto ERROR; } if (_MEDattrEntierLire(_gid,MED_NOM_ROR,(med_int*) meshnumit) < 0) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_NOM_ROR); SSCRUTE(_path);ISCRUTE(*meshnumit);goto ERROR; } /* Maillage local ou distant */ strcat(_meshpath,meshname); /* Le maillage est il distant */ if ( (_meshgid = _MEDdatagroupOuvrir(fid,_meshpath)) < 0) { /* Verifie que le maillage est bien référencé comme distant */ strcat(_linkpath,meshname); if ((_linkgid = _MEDdatagroupOuvrir(fid,_linkpath)) < 0) { /* MED_ERR_(_ret,MED_ERR_DOESNTEXIST,MED_ERR_MESH,MED_ERR_FIELD_MSG); */ /* SSCRUTE(fieldname);SSCRUTE(_meshpath);SSCRUTE(_linkpath); */ /* goto ERROR; */ *localmesh = MED_FALSE; } *localmesh = MED_FALSE; } else *localmesh = MED_TRUE; *nmesh = 1; _ret = 0; ERROR: if (_gid>0) if (_MEDdatagroupFermer(_gid) < 0) { MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,_path); ISCRUTE_id(_gid); } if (_meshgid>0) if (_MEDdatagroupFermer(_meshgid) < 0) { MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,_meshpath); ISCRUTE_id(_meshgid); } if (_linkgid>0) if (_MEDdatagroupFermer(_linkgid) < 0) { MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,_linkpath); ISCRUTE_id(_linkgid); } va_end(params); *fret = _ret; return; }
void _MEDfieldnProfile236(int dummy, ...) { med_int _ret=-1,_err=-1; med_idt _gid=0,_datagroup1=0; char _path[(MED_TAILLE_CHA+MED_NAME_SIZE+1)+(2*MED_MAX_PARA+1)+1]=MED_CHA; char _datagroupname1 [2*MED_TAILLE_NOM_ENTITE+2]=""; char _nomdatagroup2 [2*MED_MAX_PARA+1] =""; char _geotype [MED_TAILLE_NOM_ENTITE+1] =""; char _profilename [MED_NAME_SIZE+1] =""; char _meshname [MED_NAME_SIZE+1] =""; char _localizationname[MED_NAME_SIZE+1] =""; med_int _numdt=0, _numit=0; med_size _n=0,_ncpst=0; med_bool _checkmultiplemesh=MED_TRUE, _multiplemesh =MED_FALSE; med_bool _checkmeshname =MED_TRUE, _samedefaultmeshname=MED_FALSE; char _tmp1 [MED_TAILLE_NOM_ENTITE+1]=""; /* med_size _rank; */ 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 , , entitype ); MED_VARGS_DECL(const, med_geometry_type , , geotype ); MED_VARGS_DECL(, char *, const , defaultprofilename ); MED_VARGS_DECL(, char *, const , defaultlocalizationname ); 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 , , entitype ); MED_VARGS_DEF(const, med_geometry_type , , geotype ); MED_VARGS_DEF(, char *, const , defaultprofilename ); MED_VARGS_DEF(, char *, const , defaultlocalizationname ); MED_VARGS_DEF(, med_int * ,, fret ); /* * On inhibe le gestionnaire d'erreur HDF 5 */ _MEDmodeErreurVerrouiller(); NOFINALBLANK(fieldname,ERROR); /* * Autorise la lecture du profile et de la localisation des points d'intégration * s'il n'y a qu'un même maillage sur tous les pas de temps de tous les couples * (typent,typgeo) */ #if ! defined(MED_CHECK_23FORMAT) #error "Data model objects version checking must be either activated or deactivated, hence MED_CHECK_23FORMAT macro must be defined." #error "Verify that you include med_config.h, thanks." #endif # if MED_CHECK_23FORMAT == 1 if ( _MEDfieldComputingStepCheck236(fid, fieldname, &_ncpst, _checkmultiplemesh, &_multiplemesh, _checkmeshname, &_samedefaultmeshname) < 0) { MED_ERR_(_ret,MED_ERR_INVALID,MED_ERR_FIELD,fieldname); goto ERROR; } # endif strcat(_path,fieldname); strcat(_path,"/"); if (_MEDnomEntite(_datagroupname1,entitype) < 0) { MED_ERR_(_ret,MED_ERR_INVALID,MED_ERR_ENTITY,MED_ERR_VALUE_MSG); ISCRUTE_int(entitype);SSCRUTE(_path);goto ERROR; }; if ((entitype != MED_NOEUD)) { if (_MEDnomGeometrie30(_tmp1,geotype) < 0) { MED_ERR_(_ret,MED_ERR_INVALID,MED_ERR_GEOMETRIC,MED_ERR_VALUE_MSG); ISCRUTE_int(geotype);SSCRUTE(_path);goto ERROR; } strcat(_datagroupname1,"."); strcat(_datagroupname1,_tmp1); } strcat(_path,_datagroupname1); if ((_datagroup1 = _MEDdatagroupOuvrir(fid,_path)) < 0) { _ret = 0; goto ERROR; } strcat(_path,"/"); /*TODO : Vérifier IFORMAT */ sprintf(_nomdatagroup2,"%*li%*li",MED_MAX_PARA,(long ) numdt,MED_MAX_PARA,(long ) numit); strcat(_path,_nomdatagroup2); /* if ( _MEDobjectGetRank(fid, */ /* _path, */ /* _rank ) < 0 ) { */ /* MED_ERR_(_ret,MED_ERR_CALL,MED_ERR_API,"_MEDobjectGetRank"); */ /* goto ERROR; */ /* } */ if ((_gid = _MEDdatagroupOuvrir(fid,_path)) < 0) { _ret = 0; goto ERROR; } strcat(_path,"/"); /*Lit l'attribut MED_NOM_NDT */ if ( _MEDattrEntierLire(_gid,MED_NOM_NDT, &_numdt) < 0) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_FIELD_MSG); SSCRUTE(fieldname);SSCRUTE(_path);SSCRUTE(MED_NOM_NDT); ISCRUTE(_numdt);goto ERROR; } if ( _numdt != numdt) { MED_ERR_(_ret,MED_ERR_NOTEQUAL,MED_ERR_ATTRIBUTE,MED_ERR_FIELD_MSG); SSCRUTE(fieldname);ISCRUTE(_numdt);ISCRUTE(numdt);goto ERROR; } /*Lit l'attribut MED_NOM_NOR */ if ( _MEDattrEntierLire(_gid,MED_NOM_NOR, &_numit) < 0) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_FIELD_MSG); SSCRUTE(fieldname);SSCRUTE(_path);SSCRUTE(MED_NOM_NOR); ISCRUTE(_numit); goto ERROR; } if ( _numit != numit) { MED_ERR_(_ret,MED_ERR_NOTEQUAL,MED_ERR_ATTRIBUTE,MED_ERR_FIELD_MSG); SSCRUTE(fieldname);ISCRUTE(_numit);ISCRUTE(numit);goto ERROR; } /*Pas d'info maillage local ou distant*/ if (_MEDattrStringLire(_gid,MED_NOM_MAI,MED_TAILLE_NOM,_meshname) < 0) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_FIELD_MSG); SSCRUTE(fieldname);SSCRUTE(_path);SSCRUTE(MED_NOM_MAI); SSCRUTE(_meshname); goto ERROR; }; strcat(_path,_meshname); if ( _MEDattributeStringRdByName(fid, _path, MED_NOM_GAU, MED_TAILLE_NOM, _localizationname) < 0 ) { MED_ERR_(_ret,MED_ERR_OPEN,MED_ERR_ATTRIBUTE, MED_ERR_NAME_MSG ); SSCRUTE(MED_NOM_GAU);SSCRUTE(_localizationname);goto ERROR; } if ( ! strcmp(_localizationname,MED_NOGAUSSi)) strcpy(defaultlocalizationname,MED_NO_LOCALIZATION); else strcpy(defaultlocalizationname,_localizationname); if ( _MEDattributeStringRdByName(fid, _path, MED_NOM_PFL, MED_TAILLE_NOM, _profilename) < 0 ) { MED_ERR_(_ret,MED_ERR_OPEN,MED_ERR_ATTRIBUTE, MED_ERR_NAME_MSG ); SSCRUTE(MED_NOM_PFL);SSCRUTE(_profilename);goto ERROR; } if ( strcmp(_profilename,MED_NOPFLi) && strcmp(_profilename,"") ) /* le test MED_NOPFLi pour des raisons de compatibilité */ { strcpy(defaultprofilename,_profilename); } else { strcpy(defaultprofilename, MED_NO_PROFILE); } _ret = (med_int) 1; ERROR: if (_datagroup1>0) if (_MEDdatagroupFermer(_datagroup1) < 0) { MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,_path); SSCRUTE(_datagroupname1); ISCRUTE_id(_datagroup1); } if (_gid>0) if (_MEDdatagroupFermer(_gid) < 0) { MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,_path); ISCRUTE_id(_gid); } va_end(params); *fret = _ret; return; }