Back to index

salome-med  6.5.0
Functions
med_2_3 Namespace Reference

Functions

med_err MEDfieldComputingStepInfo (const med_idt fid, const char *const fieldname, const int csit, med_int *const numdt, med_int *const numit, med_float *const dt)
med_err MEDmeshEntityFamilyNumberRd (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, med_int *const number)
med_err MEDmeshEntityNumberRd (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, med_int *const number)
med_err MEDfieldCr (const med_idt fid, const char *const fieldname, const med_field_type fieldtype, const med_int nbofcomponent, const char *const componentname, const char *const componentunit, const char *const dtunit, const char *const meshname)
void _MEDmodeErreurVerrouiller (void)
med_err MEDMEMchampLire (med_idt fid, char *maa, char *cha, unsigned char *val, med_mode_switch interlace, med_int numco, char *locname, char *profil, med_mode_profil pflmod, med_entite_maillage type_ent, med_geometrie_element type_geo, med_int numdt, med_int numo)
med_err MEDMEMgaussEcr (med_idt fid, med_geometrie_element type_geo, med_float *refcoo, med_mode_switch mode_coo, med_int ngauss, med_float *gscoo, med_float *wg, char *locname)
med_err MEDMEMprofilEcr (med_idt fid, med_int *pflval, med_int n, char *profilname)
med_idt _MEDdatagroupOuvrir (med_idt pid, char *nom)
med_err _MEDdatagroupFermer (med_idt id)

Function Documentation

med_err med_2_3::_MEDdatagroupFermer ( med_idt  id)

Here is the caller graph for this function:

med_idt med_2_3::_MEDdatagroupOuvrir ( med_idt  pid,
char *  nom 
)

Here is the caller graph for this function:

Definition at line 32 of file MEDmodeErreurVerrouiller.cxx.

{
  H5Eset_auto(NULL,NULL);
}
med_err med_2_3::MEDfieldComputingStepInfo ( const med_idt  fid,
const char *const  fieldname,
const int  csit,
med_int *const  numdt,
med_int *const  numit,
med_float *const  dt 
)

Here is the caller graph for this function:

med_err med_2_3::MEDfieldCr ( const med_idt  fid,
const char *const  fieldname,
const med_field_type  fieldtype,
const med_int  nbofcomponent,
const char *const  componentname,
const char *const  componentunit,
const char *const  dtunit,
const char *const  meshname 
)

Here is the caller graph for this function:

MEDMEM_EXPORT med_err med_2_3::MEDMEMchampLire ( med_idt  fid,
char *  maa,
char *  cha,
unsigned char *  val,
med_mode_switch  interlace,
med_int  numco,
char *  locname,
char *  profil,
med_mode_profil  pflmod,
med_entite_maillage  type_ent,
med_geometrie_element  type_geo,
med_int  numdt,
med_int  numo 
)

Definition at line 85 of file MEDMEM_MEDMEMchampLire.cxx.

    {
      med_err ret=-1;
      med_idt gid=0, datagroup1=0, datagroup2=0,datagroup3=0;
      med_int ncomp=0, chtype=0, ngauss=0, i=0, pfluse=0;
      char nomdatagroup1[2*MED_TAILLE_NOM_ENTITE+2]="",nomdatagroup2[2*MED_MAX_PARA+1]="";
      char tmp1[MED_TAILLE_NOM_ENTITE+1]="", pfltmp[MED_TAILLE_NOM+1]="";
      char chemin[MED_TAILLE_CHA+MED_TAILLE_NOM+1]="";
      med_size   psize=0;
      med_int   *pfltabtmp=0;
      med_ssize *pfltab=0;

      /*
       * On inhibe le gestionnaire d'erreur HDF 5
       */
      _MEDmodeErreurVerrouiller();

      /*
       * Si le Data Group cha n'existe pas => erreur
       */
      strcpy(chemin,MED_CHA);
      strcat(chemin,cha);
      if ((gid = _MEDdatagroupOuvrir(fid,chemin)) < 0)
        goto ERROR;

      /* Lecture du nbre de composantes du champ */

      if (_MEDattrEntierLire(gid,MED_NOM_NCO,&ncomp) < 0)
        goto ERROR;

      /*
       * Si le Data Group  de niveau 1 <type_ent>[.<type_geo>] n'existe pas => erreur
       */
      if (_MEDnomEntite(nomdatagroup1,type_ent) < 0)
        goto ERROR;
      if ((type_ent != MED_NOEUD))
        {
          if (_MEDnomGeometrie(tmp1,type_geo) < 0)
            goto ERROR;
          strcat(nomdatagroup1,".");
          strcat(nomdatagroup1,tmp1);
        }
      datagroup1 = 0;
      if ( (datagroup1 = _MEDdatagroupOuvrir(gid,nomdatagroup1)) < 0 )
        goto ERROR;

      /*
       * Si le Data Group de niveau 2 <numdt>.<numoo> n'existe pas => erreur
       */
      sprintf(nomdatagroup2,"%*li%*li",MED_MAX_PARA,(long ) numdt,MED_MAX_PARA,(long ) numo);

      datagroup2 = 0;
      if ( (datagroup2 = _MEDdatagroupOuvrir(datagroup1,nomdatagroup2)) < 0)
        goto ERROR;

      /*
       * Ouvre le datagroup de niveau 3 <maa>
       */

      if ( ! strcmp(maa,MED_NOREF) )
        if (_MEDattrStringLire(datagroup2,MED_NOM_MAI,MED_TAILLE_NOM,maa) < 0)
          goto ERROR;

      datagroup3 = 0;
      if ( (datagroup3 = _MEDdatagroupOuvrir(datagroup2,maa)) < 0 )
        goto ERROR;

      /* Gestion des profils*/

      /*
       * Lire le profil
       */

      if (_MEDattrStringLire(datagroup3,MED_NOM_PFL,MED_TAILLE_NOM,pfltmp) < 0)
        goto ERROR;

      if ( pfluse = (strcmp(pfltmp,MED_NOPFLi) && strcmp(pfltmp,"")) ) /* le test MED_NOPFLi pour des raisons de compatibilité */
        {
          strcpy(profil,pfltmp);
          if ( (i = MEDnValProfil(fid,profil)) < 0 )
            goto ERROR;
          else
            psize = i;

          pfltabtmp = (med_int *)   malloc (sizeof(med_int)*psize);
          pfltab = (med_ssize *) malloc (sizeof(med_ssize)*psize);
          if (MEDprofilLire(fid,pfltabtmp,profil) < 0)
            goto ERROR;
          for (i=0;i<psize;i++)
            pfltab[i] = (med_ssize) pfltabtmp[i];

        }
      else {
        psize = MED_NOPF;
        strcpy(profil,MED_NOPFL);
      }


      /* Lire le nbre des points de GAUSS*/
      if (_MEDattrEntierLire(datagroup3,MED_NOM_NGA,&ngauss) < 0) {
        MESSAGE_MED("Erreur à la lecture de l'attribut MED_NOM_NGA : ");
        ISCRUTE_MED(ngauss);goto ERROR;
      };

      /* Lire l'identificateur de localisation des points de GAUSS*/
      if ( _MEDattrStringLire(datagroup3,MED_NOM_GAU,MED_TAILLE_NOM,locname) < 0) {
        MESSAGE_MED("Erreur à la lecture de l'attribut MED_NOM_GAU : ");
        SSCRUTE_MED(locname); goto ERROR;
      }

      /*
       * Lecture du champ
       */

      if (_MEDattrEntierLire(gid,MED_NOM_TYP,&chtype) < 0)
        goto ERROR;

      switch(chtype)
        {
        case MED_FLOAT64 :
          if ( _MEDdatasetNumLire(datagroup3,MED_NOM_CO,MED_FLOAT64,
                                  interlace,ncomp,numco,
                                  psize,pflmod,pfltab,ngauss,val)< 0)
            goto ERROR;
          break;

        case MED_INT32 :
#if defined(F77INT64)
          if ( _MEDdatasetNumLire(datagroup3,MED_NOM_CO,MED_INT64,
                                  interlace,ncomp,numco,
                                  psize,pflmod,pfltab,ngauss,val)< 0)
            goto ERROR;
#else
          if ( _MEDdatasetNumLire(datagroup3,MED_NOM_CO,MED_INT32,
                                  interlace,ncomp,numco,
                                  psize,pflmod,pfltab,ngauss,val)< 0)
            goto ERROR;
#endif
          break;

        case MED_INT64 :
#if defined(F77INT64)
          if ( _MEDdatasetNumLire(datagroup3,MED_NOM_CO,MED_INT64,
                                  interlace,ncomp,numco,
                                  psize,pflmod,pfltab,ngauss,val)< 0)
            goto ERROR;
#else
          goto ERROR;
#endif
          break;

        default :
          goto ERROR;
        }

      /*
       * On ferme tout
       */

      ret = 0;

    ERROR:

      if ( pfluse ) { free(pfltab); free(pfltabtmp);}

      if (datagroup3>0)     if (_MEDdatagroupFermer(datagroup3) < 0) {
        MESSAGE_MED("Impossible de fermer le datagroup : ");
        ISCRUTE_MED(datagroup3); ret = -1;
      }

      if (datagroup2>0)     if (_MEDdatagroupFermer(datagroup2) < 0) {
        MESSAGE_MED("Impossible de fermer le datagroup : ");
        ISCRUTE_MED(datagroup2); ret = -1;
      }

      if (datagroup1>0)     if (_MEDdatagroupFermer(datagroup1) < 0) {
        MESSAGE_MED("Impossible de fermer le datagroup : ");
        ISCRUTE_MED(datagroup1); ret = -1;
      }

      if (gid>0)     if (_MEDdatagroupFermer(gid) < 0) {
        MESSAGE_MED("Impossible de fermer le datagroup : ");
        ISCRUTE_MED(gid); ret = -1;
      }

      return ret;
    }

Here is the call graph for this function:

MEDMEM_EXPORT med_err med_2_3::MEDMEMgaussEcr ( med_idt  fid,
med_geometrie_element  type_geo,
med_float *  refcoo,
med_mode_switch  mode_coo,
med_int  ngauss,
med_float *  gscoo,
med_float *  wg,
char *  locname 
)

Definition at line 76 of file MEDMEM_MEDMEMgaussEcr.cxx.

    {
      med_idt gid=0, chid=0;
      med_size dimd[1];
      med_err ret = -1;
      med_int typegeo = -1;
      char chemin[MED_TAILLE_GAUSS+1]="";

      /*
       * On inhibe le gestionnaire d'erreur HDF 5
       */
      _MEDmodeErreurVerrouiller();

      /*
       * Si le groupe "GAUSS" n'existe pas, on le cree
       */
      strncpy(chemin,MED_GAUSS,MED_TAILLE_GAUSS-1);
      chemin[MED_TAILLE_GAUSS-1] = '\0';
      if ((gid = _MEDdatagroupOuvrir(fid,chemin)) < 0)
        if ((gid = _MEDdatagroupCreer(fid,chemin)) < 0) {
          MESSAGE_MED("Impossible de creer le groupe MED_GAUSS : ");
          SSCRUTE_MED(chemin); goto ERROR;
        }

      /*
       * Si le groupe <locname> n'existe pas, on le cree
       * Sinon => erreur
       */
      if ((chid = _MEDdatagroupOuvrir(gid,locname)) >= 0) {
        if ( false )//MED_MODE_ACCES != MED_LECTURE_ECRITURE )
  {
          MESSAGE_MED("Le nom de localisation existe déjà : ");
          SSCRUTE_MED(locname); goto ERROR;
        }
      } else
        if ((chid = _MEDdatagroupCreer(gid,locname)) < 0)
          goto ERROR;

      /*
       * On stocke <ngauss> sous forme d'attribut
       */
      if (_MEDattrEntierEcrire(chid,MED_NOM_NBR,&ngauss) < 0) {
        MESSAGE_MED("Erreur à l'écriture de l'attribut MED_NOM_NBR : ");
        ISCRUTE_MED(ngauss);goto ERROR;
      };

      /*
       * On stocke <type_geo> sous forme d'attribut
       */
      typegeo = (med_int) type_geo;
      /* sizeof(enum) tjrs = sizeof(int) en C, or
         sur machines 64 bits par défaut med_int==long,
         du coup sur  machines 64 bits _MEDattrEntierEcrire utilise
         le type hdf NATIVE_LONG, ce qui pose un problème qd on passe
         un enum.
      */
      if (_MEDattrEntierEcrire(chid,MED_NOM_GEO,&typegeo) < 0) {
        MESSAGE_MED("Erreur à l'écriture de l'attribut MED_NOM_GEO : ");
        ISCRUTE_MED(type_geo);goto ERROR;
      };


      /*
       * On stocke les coordonnées de référence dans un dataset
       */

      dimd[0] = (type_geo%100)*(type_geo/100);
      if ( _MEDdatasetNumEcrire(chid,MED_NOM_COO,MED_FLOAT64,mode_coo,(type_geo/100),MED_ALL,MED_NOPF,MED_NO_PFLMOD,0,MED_NOPG,dimd,
                                (unsigned char*) refcoo)  < 0 ) {
        MESSAGE_MED("Impossible d'ecrire le dataset : ");SSCRUTE_MED(MED_NOM_COO);
        ISCRUTE_MED(dimd); goto ERROR;
      }

      /*
       * On stocke les points d'intégration dans un dataset
       */

      dimd[0] = ngauss*(type_geo/100);
      if ( _MEDdatasetNumEcrire(chid,MED_NOM_GAU,MED_FLOAT64,mode_coo,(type_geo/100),MED_ALL,MED_NOPF,MED_NO_PFLMOD,0,MED_NOPG,dimd,
                                (unsigned char*) gscoo)  < 0 ) {
        MESSAGE_MED("Impossible d'ecrire le dataset : ");SSCRUTE_MED(MED_NOM_GAU);
        ISCRUTE_MED(dimd); goto ERROR;
      }

      /*
       * On stocke les poids dans un dataset
       */

      dimd[0] = ngauss;
      if ( _MEDdatasetNumEcrire(chid,MED_NOM_VAL,MED_FLOAT64,mode_coo,1,MED_ALL,MED_NOPF,MED_NO_PFLMOD,0,MED_NOPG,dimd,
                                (unsigned char*) wg)  < 0 ) {
        MESSAGE_MED("Impossible d'ecrire le dataset : ");SSCRUTE_MED(MED_NOM_VAL);
        ISCRUTE_MED(dimd); goto ERROR;
      }


      ret = 0;

    ERROR:

      /*
       * On ferme tout
       */

      if (chid>0)     if (_MEDdatagroupFermer(chid) < 0) {
        MESSAGE_MED("Impossible de fermer le datagroup : ");
        ISCRUTE_MED(chid); ret = -1;
      }

      if (gid>0)     if (_MEDdatagroupFermer(gid) < 0) {
        MESSAGE_MED("Impossible de fermer le datagroup : ");
        ISCRUTE_MED(gid); ret = -1;
      }

      return ret;
    }

Here is the call graph for this function:

MEDMEM_EXPORT med_err med_2_3::MEDMEMprofilEcr ( med_idt  fid,
med_int *  pflval,
med_int  n,
char *  profilname 
)

Definition at line 64 of file MEDMEM_MEDMEMprofilEcr.cxx.

    {
      med_idt gid, chid;
      med_size dimd[1];
      med_err ret;
      char chemin[MED_TAILLE_PROFILS+1];

      /*
       * On inhibe le gestionnaire d'erreur HDF 5
       */
      _MEDmodeErreurVerrouiller();

      /*
       * Si le groupe "PROFILS" n'existe pas, on le cree
       */
      strncpy(chemin,MED_PROFILS,MED_TAILLE_PROFILS-1);
      chemin[MED_TAILLE_PROFILS-1] = '\0';
      if ((gid = _MEDdatagroupOuvrir(fid,chemin)) < 0)
        if ((gid = _MEDdatagroupCreer(fid,chemin)) < 0) {
          MESSAGE_MED("Impossible de creer le groupe MED_PROFILS : ");
          SSCRUTE_MED(chemin); goto ERROR;
        }

      /*
       * Si le groupe "profilname" n'existe pas, on le cree
       * Sinon => erreur
       */
      if ((chid = _MEDdatagroupOuvrir(gid,profilname)) >= 0) {
        if ( false )//MED_MODE_ACCES != MED_LECTURE_ECRITURE )
  {
          MESSAGE_MED("Le profil existe déjà : ");
          SSCRUTE_MED(profilname); goto ERROR;
        }
      } else
        if ((chid = _MEDdatagroupCreer(gid,profilname)) < 0)
          goto ERROR;

      /*
       * On stocke "n" sous forme d'attribut
       */
      if ((ret = _MEDattrEntierEcrire(chid,MED_NOM_NBR,&n)) < 0) {
        MESSAGE_MED("Erreur à l'écriture de l'attribut MED_NOM_NBR : ");
        ISCRUTE_MED(n); goto ERROR;
      };

      /*
       * On stocke le profil dans un dataset
       */
      dimd[0] = n;
#if defined(F77INT64)
      ret =  _MEDdatasetNumEcrire(chid,MED_NOM_PFL,MED_INT64,MED_NO_INTERLACE,MED_DIM1,MED_ALL,MED_NOPF,MED_NO_PFLMOD,0,MED_NOPG,dimd,
                                  (unsigned char*) pflval);
#else
      ret =  _MEDdatasetNumEcrire(chid,MED_NOM_PFL,MED_INT32,MED_NO_INTERLACE,MED_DIM1,MED_ALL,MED_NOPF,MED_NO_PFLMOD,0,MED_NOPG,dimd,
                                  (unsigned char*) pflval);
#endif
      if (ret < 0 ) {
        MESSAGE_MED("Impossible d'ecrire le dataset pflval de taille  : ");
        ISCRUTE_MED(n); goto ERROR;
      }

      ret = 0;
    ERROR:
      /*
       * On ferme tout
       */
      if (chid>0)     if (_MEDdatagroupFermer(chid) < 0) {
        MESSAGE_MED("Impossible de fermer le datagroup : ");
        ISCRUTE_MED(chid); ret = -1;
      }

      if (gid>0)     if (_MEDdatagroupFermer(gid) < 0) {
        MESSAGE_MED("Impossible de fermer le datagroup : ");
        ISCRUTE_MED(gid); ret = -1;
      }

      return ret;
    }

Here is the call graph for this function:

med_err med_2_3::MEDmeshEntityFamilyNumberRd ( 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,
med_int *const  number 
)

Here is the caller graph for this function:

med_err med_2_3::MEDmeshEntityNumberRd ( 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,
med_int *const  number 
)

Here is the caller graph for this function: