28 #define USER_MODE MED_COMPACT_STMODE 31 const char *
const nommaa,
34 const char * geotypename_elst,
35 const char *
const nomcha,
36 const char *
const dtunit,
39 const char *
const comp,
40 const char *
const unit,
45 int i,j,k,l,m,n,nb_geo=0;
46 med_int nbpdtnor=0,pflsize,*pflval,ngauss=0,ngroup,nval;
47 med_int numdt=0,numo=0,nprofile=0;
48 med_int meshnumdt=0, meshnumit=0 ;
50 med_size _sizei=0,_sizef=0,_sizeNbr=0;
52 unsigned char *val = NULL;
74 const char *
const * AFF;
76 const char * * AFF_STRUCT = NULL;
102 AFF_STRUCT = (
const char * *) calloc(
sizeof(
const char * ),nmodels+1);
103 for(i=0;i<nmodels;++i) AFF_STRUCT[i+1]= &geotypename_elst[(
MED_NAME_SIZE+1)*i];
112 for (k=1;k<=nb_geo;k++) {
116 if (nbpdtnor < 1 )
continue;
118 for (j=0;j<nbpdtnor;j++) {
121 &dt, &meshnumdt, &meshnumit) < 0 ) {
122 MESSAGE(
"Erreur a l'appel de MEDfieldComputingStepMeshInfo : ");
123 EXIT_IF(NULL == NULL,NULL,NULL);
127 pflname,locname ) ) < 0 ) {
128 MESSAGE(
"Erreur a la demande du nombre de profils referencés par le champ : ");
133 EXIT_IF(NULL == NULL,NULL,NULL);
137 for (l=0;l<nprofile;l++) {
141 locname, &ngauss) ) < 0 ) {
142 MESSAGE(
"Erreur a la lecture du nombre de valeurs du champ : ");
146 EXIT_IF(NULL == NULL,NULL,NULL);
163 MESSAGE(
"Erreur a la lecture du type de champ : ");
165 EXIT_IF(NULL == NULL,NULL,NULL);
168 val = (
unsigned char*) calloc(ncomp*nval*ngauss,medtype_size);
169 EXIT_IF(val == NULL,
"L'appel de calloc a échoué ",NULL);
173 MESSAGE(
"Erreur a la lecture des valeurs du champ : ");
176 EXIT_IF(NULL == NULL,NULL,NULL);
180 _sizeNbr = MED_FIELD_GRP_SIZE+strlen(nomcha);
181 _getNBR[_sizeNbr]=
'/';++_sizeNbr;
185 _getNBR[_sizeNbr]=
'/';++_sizeNbr;
189 _sizeNbr += strlen(_entitygeotypename);
190 _getNBR[_sizeNbr]=
'/';++_sizeNbr;
191 if ( strlen(pflname) )
196 _sizeNbr += strlen(_profilename);
203 EXIT_IF( H5Gmove(fid, _pathi, _pathtmp ) < 0,
"Switch to ",_pathtmp);
208 _datasetexist=H5Lexists( fid, _pathf, H5P_DEFAULT );
209 if (_datasetexist ) {
EXIT_IF( (H5Gmove(fid, _pathf, _pathi ) < 0) ,
"Switch to ",_pathi); }
227 if ( (_nentFromMesh =
MEDmeshnEntity( fid, nommaa, meshnumdt, meshnumit, entite, type_geo[k],
228 meddatatype,
MED_NODAL, &changement, &transformation )
230 if ( (_nentFromMesh =
MEDmeshnEntity( fid, nommaa, meshnumdt, meshnumit, entite, type_geo[k],
233 MESSAGE(
"Erreur a la lecture du nombre total d'entités supports au champ : ");
238 EXIT_IF(_nentFromMesh < 0, NULL,NULL);
241 "Le nombre global d'entités support au champ ne correspond pas au nombre d'entitées" 242 " du maillage associé !" );
243 _nent = _nentFromMesh;
247 _nent = _nentFromField;
248 fprintf(stdout,
" ... Le maillage [%s] associé au champ n'est pas local," 249 " utilisation du champ pour déterminer le nbre global d'entités [%s] : "IFORMAT" ...\n",
250 nommaa,_entitygeotypename,_nent);
257 _nent, (
unsigned char*) val) < 0,
264 EXIT_IF( H5Gmove(fid, _pathi , _pathf ) < 0,
"Switch to ",_pathf);
265 EXIT_IF( H5Gmove(fid, _pathtmp, _pathi ) < 0,
"Switch to ",_pathi);
267 if ( val ) {free(val);val = NULL;}
270 fprintf(stdout,
" ... Normalisation des données de type entier effectuée...\n");
289 char *comp= NULL, *unit= NULL;
293 htri_t _datasetexist;
303 char * geotypename_elst;
321 EXIT_IF(_nmodels < 0,
"lors de la lecture du nombre d'éléments de structure",NULL);
325 geotypename_elst = (
char *) malloc(_nmodels*
sizeof(
char)*(
MED_NAME_SIZE+1));
327 for (i=0; i < _nmodels; i++) {
329 &_elementdim, _supportmeshname,
330 &_entitytype, &_nnode, &_ncell, &_geocelltype,
331 &_nconstantattribute, &_anyprofile, &_nvariableattribute );
332 EXIT_IF(ret < 0,
"lors de la demande d'information sur les éléments de structure",NULL);
338 EXIT_IF(ncha < 0,
"lors de la lecture du nombre de champs",NULL);
341 for (i=0;i<ncha;i++) {
346 MESSAGE(
"Erreur à la lecture du nombre de composantes : ");
ISCRUTE(ncomp);
352 EXIT_IF(comp == NULL,NULL,NULL);
354 EXIT_IF(unit == NULL,NULL,NULL);
356 ret =
MEDfieldInfo(fid,i+1,nomcha,meshname,&local,&typcha,comp,unit,dtunit,&ncstp);
361 fprintf(stdout,
" >>> Normalisation du champ [%s] \n",nomcha);
364 lret =
getFieldsOn(fid, meshname, _nmodels, geotype_elst,geotypename_elst,
365 nomcha, dtunit, typcha, ncomp, comp, unit,
MED_NODE, mode_coo, ncstp);
368 if (lret == 0) lret =
getFieldsOn(fid, meshname, _nmodels, geotype_elst, geotypename_elst,
369 nomcha, dtunit, typcha, ncomp, comp, unit,
MED_CELL, mode_coo, ncstp);
370 else {
MESSAGE(
"Erreur à la lecture des champs aux noeuds "); ret = -1;
continue;}
372 if (lret == 0) lret =
getFieldsOn(fid, meshname, _nmodels, geotype_elst, geotypename_elst,
374 else {
MESSAGE(
"Erreur à la lecture des champs aux mailles "); ret = -1;
continue;}
376 if (lret == 0) lret =
getFieldsOn(fid, meshname, _nmodels, geotype_elst, geotypename_elst,
378 else {
MESSAGE(
"Erreur à la lecture des champs aux faces "); ret = -1;
continue;}
380 if (lret == 0) lret =
getFieldsOn(fid, meshname, _nmodels, geotype_elst, geotypename_elst,
381 nomcha, dtunit, typcha, ncomp, comp, unit,
MED_NODE_ELEMENT,mode_coo, ncstp);
382 else {
MESSAGE(
"Erreur a la lecture des champs aux aretes "); ret = -1;
continue;}
384 if (lret != 0) {
MESSAGE(
"Erreur a la lecture des champs aux noeuds des mailles "); ret = -1;};
387 lret =
getFieldsOn(fid, meshname, _nmodels, geotype_elst,geotypename_elst,
389 if (lret != 0) {
MESSAGE(
"Erreur a la lecture des champs aux éléments de sructure "); ret = -1;};
394 strncpy(&_pathf[MED_FIELD_GRP_SIZE+1],nomcha,
MED_NAME_SIZE+1);
396 EXIT_IF( (H5Ldelete(fid, _pathi , H5P_DEFAULT) < 0) ,
"Delete " ,_pathi);
398 EXIT_IF( (H5Gmove (fid, _pathf , _pathi ) < 0) ,
"Moving ",_pathf);
401 fprintf(stdout,
" >>> Normalisation du champ [%s] : ... OK ... \n",nomcha);
404 strncpy(_pathf,
"/CHA_/" ,MED_FIELD_GRP_SIZE+1 +1);
413 _datasetexist=H5Lexists( fid, _pathf, H5P_DEFAULT );
414 if (_datasetexist ) {
417 EXIT_IF( (H5Ldelete(fid,_pathf, H5P_DEFAULT) < 0) ,
"Delete ",_pathf);
MEDC_EXPORT med_err MEDfieldCr(const med_idt fid, const char *const fieldname, const med_field_type fieldtype, const med_int ncomponent, const char *const componentname, const char *const componentunit, const char *const dtunit, const char *const meshname)
Cette fonction crée un champ dans un fichier.
#define ISCRUTE_int(entier)
#define MED_ALL_CONSTITUENT
MEDC_EXPORT med_int MEDnStructElement(const med_idt fid)
Cette routine renvoie le nombre de modèles d'éléments de structure.
#define MED_FIELD_GRP_SIZE
MEDC_EXPORT med_err MEDstructElementInfo(const med_idt fid, const int mit, char *const modelname, med_geometry_type *const mgeotype, med_int *const modeldim, char *const supportmeshname, med_entity_type *const sentitytype, med_int *const snnode, med_int *const sncell, med_geometry_type *const sgeotype, med_int *const nconstantattribute, med_bool *const anyprofile, med_int *const nvariableattribute)
Cette routine décrit les caractéristiques d'un modèle d'élément de structure par itération.
MEDC_EXPORT med_err MEDfieldValueWithProfileWr(const med_idt fid, const char *const fieldname, const med_int numdt, const med_int numit, const med_float dt, const med_entity_type entitype, const med_geometry_type geotype, const med_storage_mode storagemode, const char *const profilename, const char *const localizationname, const med_switch_mode switchmode, const med_int componentselect, const med_int nentity, const unsigned char *const value)
Cette fonction permet d'écrire les valeurs d'un champ définies sur des entités d'un maillage pour une...
MEDC_EXPORT const char * MED_GET_EDGE_GEOMETRY_TYPENAME[MED_N_EDGE_FIXED_GEO+2]
MEDC_EXPORT med_int MEDfieldnComponent(const med_idt fid, const int ind)
Cette fonction lit le nombre de composantes d'un champ.
#define MED_N_NODE_FIXED_GEO
MEDC_EXPORT med_err _MEDgetFieldEntityGeoTypeName(med_idt fid, char *const entitygeotypename, const med_entity_type entitytype, const med_geometry_type geotype)
MEDC_EXPORT med_err MEDfieldInfo(const med_idt fid, const int ind, char *const fieldname, char *const meshname, med_bool *const localmesh, med_field_type *const fieldtype, char *const componentname, char *const componentunit, char *const dtunit, med_int *const ncstp)
Cette fonction permet de lire les informations concernant le champ d'indice ind . ...
MEDC_EXPORT med_err MEDfieldComputingStepMeshWr(const med_idt fid, const char *const fieldname, const med_int numdt, const med_int numit, const med_int meshnumdt, const med_int meshnumit)
Cette fonction permet de définir l'étape de calcul ( meshnumdit , meshnumit ) à utiliser pour le mail...
#define MED_ERR_EXIT_IF(expression, r1, r2, arg)
MEDC_EXPORT med_geometry_type MED_GET_EDGE_GEOMETRY_TYPE[MED_N_EDGE_FIXED_GEO+2]
void MAJ_320_330_champs(med_idt fid)
MEDC_EXPORT const char *const MED_GET_FACE_GEOMETRY_TYPENAME[MED_N_FACE_FIXED_GEO+2]
#define MED_N_EDGE_FIXED_GEO
#define MED_ERR_ATTRIBUTE
MEDC_EXPORT const char *const MED_GET_ENTITY_TYPENAME[MED_N_ENTITY_TYPES+2]
med_err getFieldsOn(med_idt fid, const char *const nommaa, med_int nmodels, const med_geometry_type *geotype_elst, const char *geotypename_elst, const char *const nomcha, const char *const dtunit, const med_field_type typcha, const med_int ncomp, const char *const comp, const char *const unit, const med_entity_type entite, const med_switch_mode stockage, const med_int ncstp)
MEDC_EXPORT const char *const MED_GET_CELL_GEOMETRY_TYPENAME[MED_N_CELL_FIXED_GEO+2]
MEDC_EXPORT const char * MED_GET_NODE_GEOMETRY_TYPENAME[MED_N_NODE_FIXED_GEO+2]
#define MED_N_CELL_FIXED_GEO
MEDC_EXPORT med_int MEDfieldnValueWithProfile(const med_idt fid, const char *const fieldname, const med_int numdt, const med_int numit, const med_entity_type entitype, const med_geometry_type geotype, const int profileit, const med_storage_mode storagemode, char *const profilename, med_int *const profilesize, char *const localizationname, med_int *const nintegrationpoint)
Cette fonction permet de lire le nombre de valeurs à lire dans un champ pour une séquence de calcul...
#define MED_N_FACE_FIXED_GEO
MEDC_EXPORT med_int MEDmeshnEntity(const med_idt fid, const char *const meshname, const med_int numdt, const med_int numit, const med_entity_type entitype, const med_geometry_type geotype, const med_data_type datatype, const med_connectivity_mode cmode, med_bool *const changement, med_bool *const transformation)
Cette routine permet de lire le nombre d'entités dans un maillage pour une séquence de calcul donnée...
MEDC_EXPORT med_geometry_type MED_GET_FACE_GEOMETRY_TYPE[MED_N_FACE_FIXED_GEO+2]
MEDC_EXPORT med_geometry_type MED_GET_CELL_GEOMETRY_TYPE[MED_N_CELL_FIXED_GEO+2]
MEDC_EXPORT med_geometry_type MED_GET_NODE_GEOMETRY_TYPE[MED_N_NODE_FIXED_GEO+2]
#define EXIT_IF(expression, message, arg)
MEDC_EXPORT med_err _MEDattributeNumRdByName(med_idt pid, const char *const path, const char *const attname, const med_internal_type type, unsigned char *const val)
MEDC_EXPORT med_err MEDfieldComputingStepMeshInfo(const med_idt fid, const char *const fieldname, const int csit, med_int *const numdt, med_int *const numit, med_float *const dt, med_int *const meshnumdt, med_int *const meshnumit)
Cette fonction permet de lire les informations caractérisant une séquence de calcul : numéro de pas d...
#define MED_NO_PROFILE_INTERNAL
MEDC_EXPORT med_err MEDfieldValueWithProfileRd(const med_idt fid, const char *const fieldname, const med_int numdt, const med_int numit, const med_entity_type entitype, const med_geometry_type geotype, const med_storage_mode storagemode, const char *const profilename, const med_switch_mode switchmode, const med_int componentselect, unsigned char *const value)
Cette fonction permet de lire les valeurs d'un champ définies sur des entités d'un maillage pour une ...
MEDC_EXPORT med_err MEDfileObjectExist(const med_idt fid, const med_class medclass, const char *const objectname, med_bool *const objectexist)
Interroge le fichier fid pour tester l'existence de l'objet objectname de type medclass.
MEDC_EXPORT med_err _MEDgetComputationStepName(const med_sorting_type sortingtype, const med_int numdt, const med_int numit, char *const datagroupname)
MEDC_EXPORT med_int MEDfieldnProfile(const med_idt fid, const char *const fieldname, const med_int numdt, const med_int numit, const med_entity_type enttype, const med_geometry_type geotype, char *const defaultprofilename, char *const defaultlocalizationname)
Cette fonction permet de lire le nombre de profils référencés dans un champ pour une séquence de calc...
#define MED_TAILLE_NOM_ENTITE
void MAJ_version_num(med_idt fid, const int majeur, const int mineur, const int release)
MEDC_EXPORT med_int MEDnField(const med_idt fid)
Cette fonction permet de lire le nombre de champs dans un fichier.