void _MEDfieldnValue236(int dummy, ...) { med_int _ret =-1; med_int _nprofile = 0; med_int _n = 0; med_int _profilearraysize = 0,_nvaluesperentity=0; med_int _nintegrationpoint= 0; med_bool _anyprofile = MED_FALSE; med_geometrie_element _locgeotype = 0; med_int _intlocgeotype = 0; med_int _nvaluesperentityfromloc=0; int _dummy =0; char _localizationname [MED_TAILLE_NOM+1] = ""; char _tmpprofilename [MED_NAME_SIZE+1] = "", *_profilename=0; char _path [MED_LOCALIZATION_GRP_SIZE+MED_TAILLE_NOM+1]= MED_LOCALIZATION_GRP; char _geotype [MED_TAILLE_NOM_ENTITE+1] = ""; MED_VARGS_DECL(const, med_idt , , fid ); MED_VARGS_DECL(const, char * , const , fieldname ); MED_VARGS_DECL(const, med_int , , numdt ); MED_VARGS_DECL(const, med_int , , numit ); MED_VARGS_DECL(const, med_entity_type , , entitytype ); MED_VARGS_DECL(const, med_geometry_type , , geotype ); MED_VARGS_DECL(, char *, const , profilename ); MED_VARGS_DECL(const, int , , profileit ); MED_VARGS_DECL(const, med_storage_mode , , storagemode ); MED_VARGS_DECL(, med_int *, const , profilesize ); MED_VARGS_DECL(, char *, const , localizationname ); MED_VARGS_DECL(, med_int *, const , nintegrationpoint ); MED_VARGS_DECL(, med_int * ,, fret ); va_list params; va_start(params,dummy); MED_VARGS_DEF(const, med_idt , , fid ); MED_VARGS_DEF(const, char * , const , fieldname ); MED_VARGS_DEF(const, med_int , , numdt ); MED_VARGS_DEF(const, med_int , , numit ); MED_VARGS_DEF(const, med_entity_type , , entitytype ); MED_VARGS_DEF(const, med_geometry_type , , geotype ); MED_VARGS_DEF(, char *, const , profilename ); MED_VARGS_DEF(const, int , , profileit ); MED_VARGS_DEF(const, med_storage_mode , , storagemode ); MED_VARGS_DEF(, med_int *, const , profilesize ); MED_VARGS_DEF(, char *, const , localizationname ); MED_VARGS_DEF(, med_int *, const , nintegrationpoint ); MED_VARGS_DEF(, med_int * ,, fret ); /* * On inhibe le gestionnaire d'erreur HDF 5 */ _MEDmodeErreurVerrouiller(); NOFINALBLANK(fieldname,ERROR); if ( (profileit != 1) && (profileit != -1)) { MED_ERR_(_ret,MED_ERR_INVALID,MED_ERR_PARAMETER,MED_ERR_VALUE_MSG); ISCRUTE_int(profileit);goto ERROR; } /* * Cette appel effectue l'appel à _MEDfieldComputingStepCheck236 */ _MEDfieldnProfile236(_dummy,fid,fieldname,numdt,numit,entitytype,geotype, &_tmpprofilename,&_localizationname,&_nprofile ); if ( _nprofile < 0 ) { MED_ERR_(_ret,MED_ERR_CALL,MED_ERR_API,"_MEDfieldnProfile236"); goto ERROR; } /* REM: MEDnVal prend en compte le nombre de points de Gauss, ce qui n'est pas le cas de MEDfieldnValue */ if ( (_n = MEDnVal(fid, (char *) fieldname,entitytype,geotype, numdt,numit,MED_NOREF,(med_mode_profil) storagemode) ) < 0 ) { MED_ERR_(_ret,MED_ERR_CALL,MED_ERR_API,"MEDnVal"); goto ERROR; } /* * Lecture de la taille du profil (eventuellement MED_ALLENTITIES_PROFILE) */ /* REM: (profileit < 0 ) signifie que l'on nous a fourni <profilename> */ if ( profileit < 0 ) { if ( !strlen(profilename)) { _profilename = MED_NOPFL; } else { if ( strcmp(_tmpprofilename,profilename) ) { MED_ERR_(_ret,MED_ERR_INVALID,MED_ERR_PARAMETER,profilename); SSCRUTE(_tmpprofilename); goto ERROR; } _profilename=profilename; _anyprofile=MED_TRUE; } } else { strncpy(profilename,_tmpprofilename,MED_TAILLE_NOM+1); profilename[MED_TAILLE_NOM]='\0'; _profilename=profilename; if ( strlen(profilename)) _anyprofile=MED_TRUE; } if ( _anyprofile ) { if ( (_profilearraysize=MEDprofileSizeByName(fid, _profilename)) < 0) { MED_ERR_(_ret,MED_ERR_CALL,MED_ERR_API,MED_ERR_FIELD_MSG); SSCRUTE(fieldname); SSCRUTE(_profilename); SSCRUTE("MEDprofileSizeByName");goto ERROR; } } /* * Lecture du nombre de points d'intégration. */ strncpy(localizationname,_localizationname,MED_TAILLE_NOM+1); localizationname[MED_TAILLE_NOM]='\0'; /* Vérification de la cohérence du nombre de valeurs pas entité */ if (entitytype == MED_NODE_ELEMENT ) { if ( strlen( _localizationname) ) { MED_ERR_(_ret,MED_ERR_NOTEQUAL,MED_ERR_PARAMETER,_localizationname); SSCRUTE(MED_NO_LOCALIZATION);ISCRUTE_int(entitytype);goto ERROR; } _nvaluesperentityfromloc = geotype % 100; } else if (! strcmp(_localizationname,MED_GAUSS_ELNO)) { /* Les points de Gauss sont d"finis sur les noeuds de l'element (mot cle) */ /* le nombre de points de Gauss est egal au nombre de noeuds de l'element */ _nvaluesperentityfromloc = geotype % 100; } else if ( strlen(_localizationname) ) { strcat(_path,_localizationname); if ( _MEDattributeNumRdByName(fid, _path, MED_NOM_NBR,MED_INTERNAL_INT,(unsigned char *) &_nvaluesperentityfromloc) < 0 ) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE, MED_ERR_NAME_MSG ); SSCRUTE(MED_NOM_NBR);SSCRUTE(_path); ISCRUTE(_nvaluesperentityfromloc);goto ERROR; } if ( _MEDattributeNumRdByName(fid, _path, MED_NOM_GEO, MED_INTERNAL_INT,(unsigned char *) &_intlocgeotype) < 0 ) { MED_ERR_(_ret,MED_ERR_READ,MED_ERR_ATTRIBUTE, MED_ERR_NAME_MSG ); SSCRUTE(MED_NOM_GEO);SSCRUTE(_path); ISCRUTE(_intlocgeotype);goto ERROR; } _locgeotype = (med_geometry_type) _intlocgeotype; if ( _locgeotype != geotype ) { MED_ERR_(_ret,MED_ERR_NOTEQUAL,MED_ERR_ATTRIBUTE,MED_ERR_LOCALIZATION_MSG); SSCRUTE(_localizationname);SSCRUTE(MED_NOM_GEO);ISCRUTE_int(_locgeotype);ISCRUTE_int(geotype); goto ERROR; } } else { _nvaluesperentityfromloc = 1; } /* Pour effectuer la vérification suivante (incohérence dans le fichier suite à une maj de la localisation ou du champ sans prise en compte d'un nombre de points d'intégration différent), il faudrait lire l'attribut MED_NOM_NGA sur le maillage par défaut du champ*/ /* Pour celà il faut soit developper une nouvelle routine soit utiliser MEDpasdetempsInfo mais qui est itérative*/ /* if ( _nvaluesperentityfromloc != _nvaluesperentity ) { */ /* MED_ERR_(_ret,MED_ERR_NOTEQUAL,MED_ERR_ATTRIBUTE,MED_ERR_LOCALIZATION_MSG); */ /* SSCRUTE(_localizationname);SSCRUTE(MED_NOM_GEO);ISCRUTE(_nvaluesperentityfromloc); */ /* ISCRUTE(_nvaluesperentity);goto ERROR; */ /* } */ *nintegrationpoint = _nvaluesperentityfromloc; _n/=_nvaluesperentityfromloc; /*Rectification de la valeur 2.3.6 qui prend en compte le nombre de points d'intégration*/ if (_anyprofile) *profilesize=_profilearraysize; else *profilesize=_n; _ret = _n; ERROR: va_end(params); *fret = _ret; return; }
med_err getFieldsOn(med_idt fid, char * nomcha, med_type_champ typcha, med_int ncomp, med_entite_maillage entite, med_mode_switch stockage) { int j,k,l,m,n,nb_geo; med_int nbpdtnor=0,pflsize,*pflval,ngauss=0,*vale=NULL,nval; med_int numdt=0,numo=0,lnsize,nbrefmaa; med_float *valr=NULL,dt=0.0; med_err ret=0; med_booleen local; char pflname [MED_TAILLE_NOM+1]=""; char locname [MED_TAILLE_NOM+1]=""; char * lien = NULL; char maa_ass [MED_TAILLE_NOM+1]=""; char dt_unit [MED_TAILLE_PNOM+1]=""; med_geometrie_element * type_geo; med_geometrie_element typ_noeud[1] = { MED_NONE }; med_geometrie_element typmai[MED_NBR_GEOMETRIE_MAILLE+2] = {MED_POINT1, MED_SEG2, MED_SEG3, MED_TRIA3, MED_QUAD4, MED_TRIA6,MED_QUAD8, MED_TETRA4, MED_PYRA5, MED_PENTA6, MED_HEXA8, MED_TETRA10, MED_PYRA13, MED_PENTA15, MED_HEXA20, MED_POLYGONE, MED_POLYEDRE}; med_geometrie_element typfac[MED_NBR_GEOMETRIE_FACE+1] = {MED_TRIA3,MED_TRIA6, MED_QUAD4,MED_QUAD8, MED_POLYGONE}; med_geometrie_element typare[MED_NBR_GEOMETRIE_ARETE] = {MED_SEG2,MED_SEG3}; char ** AFF; switch (entite) { case MED_NOEUD : type_geo = typ_noeud; nb_geo = 1; AFF = MED_GEOMETRIE_NOEUD_AFF; break; case MED_MAILLE : type_geo = typmai; nb_geo = MED_NBR_GEOMETRIE_MAILLE+2; AFF = MED_GEOMETRIE_MAILLE_AFF; break; case MED_FACE : type_geo = typfac; nb_geo = MED_NBR_GEOMETRIE_FACE+1; AFF = MED_GEOMETRIE_FACE_AFF; break; case MED_ARETE : type_geo = typare; nb_geo = MED_NBR_GEOMETRIE_ARETE; AFF = MED_GEOMETRIE_ARETE_AFF; break; } for (k=0;k<nb_geo;k++) { /* Combien de (PDT,NOR) a lire */ nbpdtnor = MEDnPasdetemps(fid,nomcha,entite,type_geo[k]); if (nbpdtnor < 1 ) continue; for (j=0;j<nbpdtnor;j++) { if ( MEDpasdetempsInfo(fid,nomcha,entite,type_geo[k], j+1, &ngauss, &numdt, &numo, dt_unit, &dt, maa_ass, &local, &nbrefmaa) <0) { MESSAGE("Erreur a la demande d'information sur (pdt,nor) : "); ISCRUTE(numdt); ISCRUTE(numo); ret = -1; continue; }; printf("\n +Pas de Temps n.%i (%f) [%s], n. d'ordre %i, avec %i pts de gauss sur le maillage par defaut.\n",numdt,dt,dt_unit,numo,ngauss); printf("\tLe maillage par defaut est : |%s|, sur un total de : %i maillages associes\n", maa_ass, nbrefmaa); /* Le maillage reference est-il porte par un autre fichier */ if ( !local ) { if ( (lnsize=MEDnValLien(fid,maa_ass) ) < 0 ) { MESSAGE("Erreur a la lecture de la taille du lien : "); SSCRUTE(maa_ass); ret = -1; } else { lien = malloc(lnsize*sizeof(char)); EXIT_IF(lien == NULL,NULL,NULL); if ( MEDlienLire(fid, lien, maa_ass) < 0 ) { MESSAGE("Erreur a la lecture du lien : "); SSCRUTE(maa_ass);SSCRUTE(lien); ret = -1; } else { printf("\tLe maillage |%s| est porte par un fichier distant |%s|\n",maa_ass,lien); } free(lien); } } /* Combien de maillages lies aux (nomcha,ent,geo,numdt,numo) */ /* Notons que cette information est egalement disponible a partir de MEDpasdetempsInfo */ if ( (nbrefmaa = MEDnChampRef(fid,nomcha,entite,type_geo[k],numdt,numo) ) < 0 ) { MESSAGE("Erreur a la demande du nombre de maillages references par le champ : "); SSCRUTE(nomcha); ISCRUTE(numdt); ISCRUTE(numo); ret = -1; continue; }; for (l=0;l<nbrefmaa;l++) { if ( MEDchampRefInfo(fid,nomcha,entite,type_geo[k], l+1,numdt, numo, maa_ass, &local, &ngauss) <0 ) { MESSAGE("Erreur a la demande d'information sur le maillage utilise par le champ n° : "); SSCRUTE(nomcha);ISCRUTE(entite);ISCRUTE(type_geo[k]); ISCRUTE(l+1);ISCRUTE(numdt); ISCRUTE(numo);SSCRUTE(maa_ass); ret = -1; continue; }; /* Prend en compte le nbre de pt de gauss automatiquement */ if ((nval = MEDnVal(fid,nomcha,entite,type_geo[k],numdt,numo,maa_ass,USER_MODE)) <= 0) { MESSAGE("Erreur a la lecture du nombre de valeurs du champ : "); SSCRUTE(nomcha);ISCRUTE(entite);ISCRUTE(type_geo[k]); ISCRUTE(numdt);ISCRUTE(numo);SSCRUTE(maa_ass);ISCRUTE(USER_MODE); ret = -1; continue; }; printf("\t- Il y a %d valeurs en mode %i. Chaque entite %s\ de type geometrique %s associes au maillage |%s| a %i pts de gauss \n", nval,USER_MODE,MED_ENTITE_MAILLAGE_AFF[(int)entite],AFF[k],maa_ass,ngauss); /* Le maillage reference est-il porte par un autre fichier */ if ( !local ) { if ( (lnsize=MEDnValLien(fid,maa_ass) ) < 0 ) { MESSAGE("Erreur a la lecture de la taille du lien : "); SSCRUTE(maa_ass); ret = -1; } else { lien = malloc(lnsize*sizeof(char)); EXIT_IF(lien == NULL,NULL,NULL); if ( MEDlienLire(fid, lien, maa_ass) < 0 ) { MESSAGE("Erreur a la lecture du lien : "); SSCRUTE(maa_ass);SSCRUTE(lien); ret = -1; } else { printf("\tLe maillage |%s| est porte par un fichier distant |%s|\n",maa_ass,lien); } free(lien); } } /*Lecture des valeurs du champ */ if (typcha == MED_FLOAT64) { valr = (med_float*) calloc(ncomp*nval,sizeof(med_float)); EXIT_IF(valr == NULL,NULL,NULL); if ( MEDchampLire(fid,maa_ass,nomcha,(unsigned char*)valr,stockage,MED_ALL,locname, pflname,USER_MODE,entite,type_geo[k],numdt,numo) < 0 ) { MESSAGE("Erreur a la lecture du nombre de valeurs du champ : "); SSCRUTE(nomcha);ISCRUTE(entite);ISCRUTE(type_geo[k]); ISCRUTE(numdt);ISCRUTE(numo);SSCRUTE(maa_ass); ret = -1; }; } else { vale = (med_int*) calloc(ncomp*nval,sizeof(med_int)); EXIT_IF(vale == NULL,NULL,NULL); if ( MEDchampLire(fid,maa_ass,nomcha,(unsigned char*)vale,stockage,MED_ALL,locname, pflname,USER_MODE,entite,type_geo[k],numdt,numo) < 0 ) { MESSAGE("Erreur a la lecture des valeurs du champ : "); SSCRUTE(nomcha);ISCRUTE(entite);ISCRUTE(type_geo[k]); ISCRUTE(numdt);ISCRUTE(numo);SSCRUTE(maa_ass); ret = -1; }; } if ( ngauss > 1 ) printf("\t- Modèle de localisation des points de Gauss de nom |%s|\n",locname); switch (stockage) { case MED_FULL_INTERLACE : printf("\t- Valeurs :\n\t"); for (m=0;m<nval/ngauss;m++) { printf("|"); for (n=0;n<ngauss*ncomp;n++) if (typcha == MED_FLOAT64) printf(" %f ",*(valr+(m*ngauss*ncomp)+n)); else printf(" %d ",*(vale+(m*ngauss*ncomp)+n)); } break; /*Affichage en fonction du profil à traiter*/ case MED_NO_INTERLACE : printf("\t- Valeurs :\n\t"); for (m=0;m<ncomp;m++) { printf("|"); for (n=0;n<nval;n++) if (typcha == MED_FLOAT64) printf(" %f ",*(valr+(m*nval)+n)); else printf(" %d ",*(vale+(m*nval)+n)); } break; } printf("|\n"); if (typcha == MED_FLOAT64) { if ( valr ) {free(valr);valr = NULL;}} else if (vale) { free(vale);vale = NULL; } /*Lecture du profil associe */ if (strcmp(pflname,MED_NOPFL) == 0 ) printf("\t- Profil : MED_NOPFL\n"); else { if ( (pflsize = MEDnValProfil(fid,pflname)) <0 ) { MESSAGE("Erreur a la lecture du nombre de valeurs du profil : "); SSCRUTE(pflname); ret = -1; continue; } printf("\t- Profil : |%s| de taille %i\n",pflname,pflsize); pflval = (med_int*) malloc(sizeof(med_int)*pflsize); EXIT_IF(pflval == NULL,NULL,NULL); if ( MEDprofilLire(fid,pflval,pflname) <0) { MESSAGE("Erreur a la lecture des valeurs du profil : "); SSCRUTE(pflname); ret = -1; } printf("\t"); for (m=0;m<pflsize;m++) printf(" %i ",*(pflval+m)); printf("\n"); free(pflval); } } } } /* fin for sur les mailles*/ return ret; }
med_err MED231champNormaliser(med_idt fid, char * nomcha, med_type_champ typcha, med_int ncomp, med_entite_maillage entite) { int j,k,l,m,n,nb_geo; med_int nbpdtnor=0,ngauss=0,*vale=NULL,nval; med_int numdt=0,numo=0,nbrefmaa; med_float *valr=NULL,dt=0.0; med_err ret=0, rett; med_booleen local; char pflname [MED_TAILLE_NOM+1]=""; char locname [MED_TAILLE_NOM+1]=""; char maa_ass_i [MED_TAILLE_NOM+1]=""; char maa_ass [MED_TAILLE_NOM+1]=""; char dt_unit [MED_TAILLE_PNOM+1]=""; med_geometrie_element * type_geo; med_geometrie_element typ_noeud[1] = { MED_NONE }; med_geometrie_element typmai[MED_NBR_GEOMETRIE_MAILLE+2] = {MED_POINT1, MED_SEG2, MED_SEG3, MED_TRIA3, MED_QUAD4, MED_TRIA6,MED_QUAD8, MED_TETRA4, MED_PYRA5, MED_PENTA6, MED_HEXA8, MED_TETRA10, MED_PYRA13, MED_PENTA15, MED_HEXA20, MED_POLYGONE, MED_POLYEDRE}; med_geometrie_element typfac[MED_NBR_GEOMETRIE_FACE+1] = {MED_TRIA3,MED_TRIA6, MED_QUAD4,MED_QUAD8, MED_POLYGONE}; med_geometrie_element typare[MED_NBR_GEOMETRIE_ARETE] = {MED_SEG2,MED_SEG3}; char ** AFF; switch (entite) { case MED_NOEUD : type_geo = typ_noeud; nb_geo = 1; AFF = MED_GEOMETRIE_NOEUD_AFF; break; case MED_MAILLE : type_geo = typmai; nb_geo = MED_NBR_GEOMETRIE_MAILLE+2; AFF = MED_GEOMETRIE_MAILLE_AFF; break; case MED_FACE : type_geo = typfac; nb_geo = MED_NBR_GEOMETRIE_FACE+1; AFF = MED_GEOMETRIE_FACE_AFF; break; case MED_ARETE : type_geo = typare; nb_geo = MED_NBR_GEOMETRIE_ARETE; AFF = MED_GEOMETRIE_ARETE_AFF; break; } for (k=0;k<nb_geo;k++) { /* Combien de (PDT,NOR) a lire */ nbpdtnor = MEDnPasdetemps(fid,nomcha,entite,type_geo[k]); if (nbpdtnor < 1 ) continue; for (j=0;j<nbpdtnor;j++) { /*le nom du maillage associé va être modifié dans MED231champRefInfoEtRenMaa */ rett = MEDpasdetempsInfo(fid,nomcha,entite,type_geo[k], j+1, &ngauss, &numdt, &numo, dt_unit, &dt, maa_ass_i, &local, &nbrefmaa); if ( rett <0) { MESSAGE("Erreur a la demande d'information sur (pdt,nor) : "); ISCRUTE(numdt); ISCRUTE(numo); ret = -1; continue; }; /* Combien de maillages lies aux (nomcha,ent,geo,numdt,numo) */ /* Notons que cette information est egalement disponible a partir de MEDpasdetempsInfo */ nbrefmaa = MEDnChampRef(fid,nomcha,entite,type_geo[k],numdt,numo); if ( nbrefmaa < 0 ) { MESSAGE("Erreur a la demande du nombre de maillages references par le champ : "); SSCRUTE(nomcha); ISCRUTE(numdt); ISCRUTE(numo); ret = -1; continue; }; for (l=0;l<nbrefmaa;l++) { rett = MED231champRefInfoEtRenMaa(fid,nomcha,entite,type_geo[k], l+1,numdt, numo, maa_ass, &local, &ngauss); if ( rett < 0 ) { MESSAGE("Erreur a la demande d'information sur le maillage utilise par le champ n° : "); ISCRUTE_int(l+1); ret = -1; continue; }; /* Prend en compte le nbre de pt de gauss automatiquement */ nval = MEDnVal(fid,nomcha,entite,type_geo[k],numdt,numo,maa_ass,MED_GLOBAL); if (nval <= 0) { MESSAGE("Erreur a la lecture du nombre de valeurs du champ : "); SSCRUTE(nomcha);ISCRUTE_int(entite);ISCRUTE_int(type_geo[k]); ISCRUTE(numdt);ISCRUTE(numo);SSCRUTE(maa_ass); ret = -1; continue; }; /*Lecture des valeurs du champ */ if (typcha == MED_FLOAT64) { valr = (med_float*) calloc(ncomp*nval,sizeof(med_float)); EXIT_IF(valr == NULL,NULL,NULL); rett = MED231champLireEtUnlink(fid,maa_ass,nomcha,(unsigned char*)valr,MED_NO_INTERLACE,MED_ALL,locname, pflname,MED_GLOBAL,entite,type_geo[k],numdt,numo); if ( rett < 0 ) { MESSAGE("Erreur a la lecture des valeurs du champ : "); SSCRUTE(nomcha);ISCRUTE_int(entite);ISCRUTE_int(type_geo[k]); ISCRUTE(numdt);ISCRUTE(numo);SSCRUTE(maa_ass); ret = -1; }; } else { vale = (med_int*) calloc(ncomp*nval,sizeof(med_int)); EXIT_IF(vale == NULL,NULL,NULL); rett = MED231champLireEtUnlink(fid,maa_ass,nomcha,(unsigned char*)vale,MED_NO_INTERLACE,MED_ALL,locname, pflname,MED_GLOBAL,entite,type_geo[k],numdt,numo); if ( rett < 0 ) { MESSAGE("Erreur a la lecture des valeurs du champ : "); SSCRUTE(nomcha);ISCRUTE_int(entite);ISCRUTE_int(type_geo[k]); ISCRUTE(numdt);ISCRUTE(numo);SSCRUTE(maa_ass); ret = -1; }; } if (strcmp(pflname,MED_NOPFL)) { if (typcha == MED_FLOAT64) { rett = MEDchampEcr(fid,maa_ass,nomcha,(unsigned char*)valr,MED_NO_INTERLACE,nval,locname, MED_ALL,pflname,MED_GLOBAL,entite,type_geo[k],numdt,dt_unit,dt,numo); if ( rett < 0 ) { MESSAGE("Erreur a l'ecriture du nombre de valeurs du champ : "); SSCRUTE(nomcha);ISCRUTE_int(entite);ISCRUTE_int(type_geo[k]); ISCRUTE(numdt);ISCRUTE(numo);SSCRUTE(maa_ass); ret = -1; }; } else { rett = MEDchampEcr(fid,maa_ass,nomcha,(unsigned char*)vale,MED_NO_INTERLACE,nval,locname, MED_ALL,pflname,MED_GLOBAL,entite,type_geo[k],numdt,dt_unit,dt,numo); if ( rett < 0 ) { MESSAGE("Erreur a l'ecriture des valeurs du champ : "); SSCRUTE(nomcha);ISCRUTE_int(entite);ISCRUTE_int(type_geo[k]); ISCRUTE(numdt);ISCRUTE(numo);SSCRUTE(maa_ass); ret = -1; }; } } if (typcha == MED_FLOAT64) { if ( valr ) {free(valr);valr = NULL;}} else if (vale) { free(vale);vale = NULL; } } } } /* fin for sur les mailles*/ return ret; }