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
00024 void
00025 _MEDfieldComputingStepMeshInfo30(int dummy,...)
00026 {
00027 va_list params;
00028 va_start(params,dummy);
00029
00030
00031 const med_idt fid = va_arg(params,const med_idt );
00032 const char * const fieldname = va_arg(params,const char * const );
00033 const int csit = va_arg(params,const int );
00034 med_int * const numdt = va_arg(params,med_int * const );
00035 med_int * const numit = va_arg(params,med_int * const );
00036 med_float * const dt = va_arg(params,med_float * const );
00037 med_int * const meshnumdt = va_arg(params,med_int * const );
00038 med_int * const meshnumit = va_arg(params,med_int * const );
00039 med_err * fret = va_arg(params, med_err* );
00040
00041 med_err _ret=-1;
00042 med_idt _gid=0,_datagroup1=0;
00043 int _num=csit-1;
00044 char _datagroupname1[2*MED_MAX_PARA+1]="";
00045 char _path [(MED_TAILLE_CHA+MED_NAME_SIZE+1)+2*MED_MAX_PARA+1]=MED_CHA;
00046 char _cstpname[2*MED_MAX_PARA+1]="";
00047
00048
00049
00050 _MEDmodeErreurVerrouiller();
00051
00052
00053
00054
00055 strcat(_path,fieldname);
00056
00057
00058
00059
00060 if ( _MEDobjectGetName(fid, _path ,_num, _cstpname) < 0 ) {
00061 MED_ERR_(_ret,MED_ERR_ACCESS,MED_ERR_DATAGROUP,_path);ISCRUTE_int(_num);
00062 goto ERROR;
00063 }
00064
00065 strcat(_path,"/");
00066 strcat(_path,_cstpname);
00067
00068 if ((_gid = _MEDdatagroupOuvrir(fid,_path)) < 0) {
00069 MED_ERR_(_ret,MED_ERR_OPEN,MED_ERR_DATAGROUP,_path);
00070 goto ERROR;
00071 }
00072
00073
00074
00075
00076
00077
00078 if (_MEDattrEntierLire(_gid,MED_NOM_NDT,(med_int*) numdt) < 0) {
00079 MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_NOM_NDT);
00080 SSCRUTE(_path);ISCRUTE(*numdt);goto ERROR;
00081 }
00082
00083 if (_MEDattrFloatLire(_gid,MED_NOM_PDT,(med_float*) dt) < 0) {
00084 MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_NOM_PDT);
00085 SSCRUTE(_path);RSCRUTE(*dt);goto ERROR;
00086 }
00087
00088 if (_MEDattrEntierLire(_gid,MED_NOM_NOR,(med_int*) numit) < 0) {
00089 MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_NOM_NOR);
00090 SSCRUTE(_path);ISCRUTE(*numit);goto ERROR;
00091 }
00092
00093 if (_MEDattrEntierLire(_gid,MED_NOM_RDT,(med_int*) meshnumdt) < 0) {
00094 MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_NOM_RDT);
00095 SSCRUTE(_path);ISCRUTE(*meshnumdt);goto ERROR;
00096 }
00097
00098 if (_MEDattrEntierLire(_gid,MED_NOM_ROR,(med_int*) meshnumit) < 0) {
00099 MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_NOM_ROR);
00100 SSCRUTE(_path);ISCRUTE(*meshnumit);goto ERROR;
00101 }
00102
00103
00104 _ret = 0;
00105
00106 ERROR:
00107
00108
00109 if (_gid>0) if (_MEDdatagroupFermer(_gid) < 0) {
00110 MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,_path);
00111 ISCRUTE_id(_gid);
00112 }
00113
00114 va_end(params);
00115 *fret = _ret;
00116 return;
00117 }