MEDmeshComputationStepDtRd.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 #include <string.h>
00023 #include <stdlib.h>
00024
00025
00026 med_err
00027 MEDmeshComputationStepDtRd(const med_idt fid,
00028 const char * const meshname,
00029 const med_int numdt,
00030 const med_int numit,
00031 med_float * const dt )
00032 {
00033
00034 med_err _ret=-1;
00035 med_idt _meshid=0,_datagroup1=0;
00036 char _meshpath[MED_TAILLE_MAA+MED_NAME_SIZE+1+2*MED_MAX_PARA+1+1]=MED_MAA;
00037 char _datagroupname1[2*MED_MAX_PARA+1]="";
00038 med_sorting_type _sortingtype;
00039 med_int _intsortingtype;
00040
00041
00042
00043
00044 _MEDmodeErreurVerrouiller();
00045 *dt=0.0;
00046
00047 strcat( _meshpath, meshname);
00048 if ((_meshid = _MEDdatagroupOuvrir(fid,_meshpath)) < 0) {
00049 MED_ERR_(_ret,MED_ERR_OPEN,MED_ERR_DATAGROUP,_meshpath);
00050 ISCRUTE_id(_meshid);goto ERROR;
00051 }
00052
00053 if ( _MEDattrEntierLire(_meshid,MED_NOM_SRT,&_intsortingtype) < 0) {
00054 MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_MESH_MSG);
00055 SSCRUTE(meshname);SSCRUTE(MED_NOM_SRT);
00056 ISCRUTE(_intsortingtype);goto ERROR;
00057 }
00058 _sortingtype = (med_sorting_type) (_intsortingtype);
00059
00060 _MEDgetComputationStepName(_sortingtype,numdt,numit,_datagroupname1);
00061
00062 if ( (_datagroup1 = _MEDdatagroupOuvrir(_meshid,_datagroupname1)) < 0 ) {
00063 MED_ERR_(_ret,MED_ERR_DOESNTEXIST,MED_ERR_COMPUTINGSTEP,_datagroupname1);
00064 SSCRUTE(meshname);goto ERROR;
00065 }
00066
00067
00068
00069 if ( _MEDattrEntierLire(_datagroup1,MED_NOM_NDT,&numdt) < 0) {
00070 MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_MESH_MSG);
00071 SSCRUTE(meshname);SSCRUTE(_meshpath);SSCRUTE(MED_NOM_NDT);
00072 ISCRUTE(numdt);goto ERROR;
00073 }
00074
00075
00076 if ( _MEDattrFloatLire(_datagroup1,MED_NOM_PDT,dt) < 0) {
00077 MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_MESH_MSG);
00078 SSCRUTE(meshname);SSCRUTE(_meshpath);SSCRUTE(MED_NOM_PDT);
00079 RSCRUTE(*dt);goto ERROR;
00080 }
00081
00082
00083 if ( _MEDattrEntierLire(_datagroup1,MED_NOM_NOR,&numit) < 0) {
00084 MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_MESH_MSG);
00085 SSCRUTE(meshname);SSCRUTE(_meshpath);SSCRUTE(MED_NOM_NOR);
00086 ISCRUTE(numit); goto ERROR;
00087 }
00088
00089 _ret = 0;
00090 ERROR:
00091
00092 if (_meshid>0) if (_MEDdatagroupFermer(_meshid) < 0) {
00093 MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,_meshpath);
00094 ISCRUTE_id(_meshid);
00095 }
00096
00097 if (_datagroup1>0) if (_MEDdatagroupFermer(_datagroup1) < 0) {
00098 MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,_meshpath);
00099 SSCRUTE(_datagroupname1);ISCRUTE_id(_datagroup1);
00100 }
00101
00102 return _ret;
00103 }