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 * 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 
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 }