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);
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;};
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);
413 _datasetexist=H5Lexists( fid, _pathf, H5P_DEFAULT );
414 if (_datasetexist ) {
417 EXIT_IF( (H5Ldelete(fid,_pathf, H5P_DEFAULT) < 0) ,
"Delete ",_pathf);
420 free(geotypename_elst);