MEDmeshGridTypeWr.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
00023 #include <string.h>
00024 #include <stdlib.h>
00025
00036 med_err
00037 MEDmeshGridTypeWr(const med_idt fid,
00038 const char * const meshname,
00039 const med_grid_type gridtype)
00040 {
00041 med_err _ret=-1;
00042 med_idt _meshid=0;
00043 char _path[MED_TAILLE_MAA+MED_NAME_SIZE+1]=MED_MAA;
00044 med_mesh_type _meshtype;
00045 med_int _intmeshtype=MED_UNDEF_MESH_TYPE;
00046 med_int _intgridtype=gridtype;
00047 med_int _intaxistype=0;
00048 med_axis_type _axistype=MED_UNDEF_AXIS_TYPE;
00049
00050
00051
00052 _MEDmodeErreurVerrouiller();
00053 if (_MEDcheckVersion30(fid) < 0) goto ERROR;
00054
00055
00056
00057
00058 strcat(_path,meshname);
00059 if ((_meshid = _MEDdatagroupOuvrir(fid,_path)) < 0) {
00060 MED_ERR_(_ret,MED_ERR_OPEN,MED_ERR_DATAGROUP,_path);
00061 ISCRUTE_id(_meshid);goto ERROR;
00062 }
00063
00064
00065
00066
00067 if ( _MEDattrEntierLire(_meshid,MED_NOM_TYP,&_intmeshtype) < 0) {
00068 MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_MESH_MSG);
00069 SSCRUTE(meshname);SSCRUTE(MED_NOM_TYP); goto ERROR;
00070 }
00071 _meshtype = (med_mesh_type) (_intmeshtype);
00072
00073 if (_meshtype == MED_UNSTRUCTURED_MESH) {
00074 MED_ERR_(_ret,MED_ERR_INVALID,MED_ERR_ATTRIBUTE,MED_ERR_MESH_MSG);
00075 SSCRUTE(meshname);SSCRUTE(MED_NOM_TYP);ISCRUTE_int(_meshtype); goto ERROR;
00076 }
00077
00078
00079
00080
00081
00082
00083
00084
00085 if ( _MEDattrEntierLire(_meshid,MED_NOM_REP,&_intaxistype) < 0) {
00086 MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE,MED_ERR_MESH_MSG);
00087 SSCRUTE(meshname);SSCRUTE(MED_NOM_REP); goto ERROR;
00088 }
00089 _axistype = (med_axis_type) (_intaxistype);
00090
00091 if (
00092 ( (gridtype == MED_CARTESIAN_GRID) && (_axistype != MED_CARTESIAN ) ) ||
00093 ( (gridtype == MED_POLAR_GRID ) && ((_axistype != MED_CYLINDRICAL) &&
00094 (_axistype != MED_SPHERICAL ) ))
00095 ) {
00096 MED_ERR_(_ret,MED_ERR_RANGE,MED_ERR_AXISTYPE,MED_ERR_MESH_MSG);
00097 SSCRUTE(meshname);ISCRUTE(_intaxistype);goto ERROR;
00098 }
00099
00100
00101
00102
00103
00104
00105 if ( _MEDattributeIntWr(_meshid,MED_NOM_GTY,&_intgridtype) < 0) {
00106 MED_ERR_(_ret,MED_ERR_WRITE,MED_ERR_ATTRIBUTE,MED_ERR_MESH_MSG);
00107 SSCRUTE(meshname);SSCRUTE(MED_NOM_GTY);
00108 ISCRUTE(_intgridtype);goto ERROR;
00109 }
00110
00111 _ret = 0;
00112
00113 ERROR:
00114
00115 if (_meshid>0) if (_MEDdatagroupFermer(_meshid) < 0) {
00116 MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,_path);
00117 ISCRUTE_id(_meshid);
00118 }
00119
00120 return _ret;
00121 }