## Documentation de la bibliothèque MED-fichier V2.3 : Guide de référence - Module "MED_Famille".

Sommaire de la page
- - Liste des routines Accès direct par le nom Interface C
    MEDfamCr MEDfamInfo | MEDgro2famCr MEDnAttribut | MEDnFam MEDnGroupe
  - Interface FORTRAN
    effamc effami | efg2fc efnatt | efnfam efngro
- Accès thématique
  Création d'une famille Interface C : MEDfamCr Interface FORTRAN : effamc Lecture du nombre de famille dans un maillage Interface C : MEDnFam Interface FORTRAN : efnfam Lecture du nombre d'attribut dans une famille Interface C : MEDnAttribut Interface FORTRAN : efnatt Lecture du nombre de groupe dans une famille Interface C : MEDnGroupe Interface FORTRAN : efngro Lecture des informations sur une famille Interface C : MEDfamInfo Interface FORTRAN : effami Conversion d'une liste de groupes en familles et écriture des familles dans un maillage Interface C : MEDgro2famCr Interface FORTRAN : efg2fc |

Retour à la page du guide de référence.

# Liste des routines

Les routines disponibles permettent de :

- Créer une famille dans un maillage.
- Savoir combien de famille contient un maillage.
- Savoir combien d'attribut contient une famille.
- Savoir combien de groupe contient une famille.
- Lire les informations sur une famille (nom, numéro, attribut(s), groupe(s)).
- Convertir une liste de groupes en familles et écrire ces familles dans un maillage.

# Création d'une famille

### Version C

- Nom : MEDfamCr
- Signature :

      med_err
      MEDfamCr(med_idt fid,char* maa,char *fam,med_int num,
      	 med_int *attide, med_int *attval, char *attdes,
      	 med_int natt,char *gro, med_int ngro)

- Paramètres :
  - fid (IN) : descripteur du fichier.
  - maa (IN) : nom du maillage.
  - fam (IN) : nom de la famille.
  - num (IN) : numéro de la famille.
  - attide (IN) : tableau des identificateurs des attributs.
  - attval (IN) : tableau des valeurs des attributs.
  - attdes (IN) : tableau des descriptions des attributs.
  - natt (IN) : nombre d'attributs.
  - gro (IN) : tableau des noms des groupes.
  - ngro (IN) : nombre de groupes.
- Code retourné : 0 si réussite, -1 sinon.

### Version FORTRAN

- Nom : effamc
- Signature :

            subroutine effamc(fid,maa,fam,num,attid,attval,attdes,
           1     natt, gro,ngro,cret)
            integer fid,num,attid(*),attval(*),natt,ngro,cret
            character *(*) maa,fam,attdes
            character *(*) gro(*)

- Paramètres :
  - fid (IN) : descripteur du fichier.
  - maa (IN) : nom du maillage.
  - fam (IN) : nom de la famille.
  - num (IN) : numéro de la famille.
  - attide (IN) : tableau des identificateurs des attributs.
  - attval (IN) : tableau des valeurs des attributs.
  - attdes (IN) : tableau des descriptions des attributs.
  - natt (IN) : nombre d'attributs.
  - gro (IN) : tableau des noms des groupes.
  - ngro (IN) : nombre de groupes.
  - cret (OUT) : code de retour, 0 si réussite, -1 sinon.

### Description

Création d'un famille dans un maillage.

### Remarques

- Le nom du maillage est une chaîne de MED_TAILLE_NOM caractères en Fortran (au plus MED_TAILLE_NOM en C).
- Les familles sont identifiées par un nom et un numéro. Le nom d'une famille est une chaîne de MED_TAILLE_NOM caractères en Fortran (au plus MED_TAILLE_NOM en C). Le numéro d'une famille de noeuds doit être positif ou nul, le numéro d'une famille d'éléments doit être négatif ou nul.
- Une famille est composée de :
  - Une liste d'attributs de valeurs entières (éventuellement vide).
  - Une liste de noms de groupes (éventuellement vide).
- Chaque attribut de famille est composé de :
  - Un descripteur entier qui correspond à un numéro d'ordre dans la liste.
  - Une valeur entière.
  - Un descripteur qui est une chaîne de MED_TAILLE_DESC (200) caractères.
  Les descripteurs et les valeurs sont stockés dans deux listes distinctes qui sont des tableaux d'entiers de taille "natt". Les descripteurs sont stockés dans un tableau de caractères.
- Chaque nom de groupes comprend MED_TAILLE_LNOM (80) caractères.
- Evolutions apportées par MED-fichier V2.2 :
  - Une famille de noeuds peut porter le même nom qu'un famille d'éléments. Par contre les familles d'éléments (respectivement de noeuds) doivent toutes avoir des noms différents.

# Lecture du nombre de famille dans un maillage

### Version C

- Nom : MEDnFam
- Signature :

      med_int
      MEDnFam(med_idt fid,char *maa)

- Paramètres :
  - fid (IN) : descripteur du fichier.
  - maa (IN) : nom du maillage.
- Code retourné : nombre de familles dans un maillage en cas de succès, -1 sinon.

### Version FORTRAN

- Nom : efnfam
- Signature :

            subroutine efnfam(fid,maa,n,cret)
            integer fid,n,cret
            character *(*) maa

- Paramètres :
  - fid (IN) : descripteur du fichier.
  - maa (IN) : nom du maillage.
  - n (OUT) : nombre de familles dans un maillage.
  - cret (OUT) : code de retour, 0 si réussite, -1 sinon.

### Description

Lecture du nombre de famille dans un maillage.

### Remarques

- Le nom du maillage est une chaîne de MED_TAILLE_NOM caractères en Fortran (au plus MED_TAILLE_NOM en C).
- Evolutions apportées par MED-fichier V2.2 :
  - Disparition des paramètres "ind" et "quoi" qui permettaient en plus de la fonctionnalité actuelle de lire le nombre d'attribut ou de groupe dans une famille. Ces deux fonctionnalités sont désormais fournies par les routines "MEDnAttribut/efnatt" et "MEDnGroupe/efngro".

# Lecture du nombre d'attribut dans une famille

### Version C

- Nom : MEDnAttribut
- Signature :

      med_int
      MEDnAttribut(med_idt fid,char *maa, int indice)

- Paramètres :
  - fid (IN) : descripteur du fichier.
  - maa (IN) : nom du maillage.
  - ind (IN) : numéro d'indice de la famille dans le maillage.
- Code retourné : nombre d'attributs dans la famille correspondant à l'indice en cas de succès, -1 sinon.

### Version FORTRAN

- Nom : efnatt
- Signature :

            subroutine efnatt(fid,maa,ind,n,cret)

            integer fid,ind,n,cret
            character *(*) maa

- Paramètres :
  - fid (IN) : descripteur du fichier.
  - maa (IN) : nom du maillage.
  - ind (IN) : numéro d'indice de la famille dans le maillage.
  - n (OUT) : nombre d'attribut dans la famille correspondant à l'indice.
  - cret (OUT) : code de retour, 0 si réussite, -1 sinon.

### Description

Lecture du nombre d'attribut dans une famille.

### Remarques

- Le nom du maillage est une chaîne de MED_TAILLE_NOM caractères en Fortran (au plus MED_TAILLE_NOM en C).
- Pour "n" familles au sein d'un maillage, les numéros d'indice vont de 1 à "n".
- Nouvelle fonctionnalité MED-fichier V2.2 :
  - Simplification de l'API sur les familles : V2.1 : MEDnFam/efnfam => V2.2 : MEDnFam/efnfam + MEDnAttribut/efnatt + MEDnGroupe/efngro.

# Lecture du nombre de groupe dans une famille

### Version C

- Nom : MEDnGroupe
- Signature :

      med_int
      MEDnGroupe(med_idt fid,char *maa, int indice)

- Paramètres :
  - fid (IN) : descripteur du fichier.
  - maa (IN) : nom du maillage.
  - ind (IN) : numéro d'indice de la famille dans le maillage.
- Code retourné : nombre de groupe dans la famille correspondant à l'indice en cas de succès, -1 sinon.

### Version FORTRAN

- Nom : efngro
- Signature :

            subroutine efngro(fid,maa,ind,n,cret)

            integer fid,ind,n,cret
            character *(*) maa

- Paramètres :
  - fid (IN) : descripteur du fichier.
  - maa (IN) : nom du maillage.
  - ind (IN) : numéro d'indice de la famille dans le maillage.
  - n (OUT) : nombre de groupe dans la famille correspondant à l'indice.
  - cret (OUT) : code de retour, 0 si réussite, -1 sinon.

### Description

Lecture du nombre de groupe dans une famille.

### Remarques

- Le nom du maillage est une chaîne de MED_TAILLE_NOM caractères en Fortran (au plus MED_TAILLE_NOM en C).
- Pour "n" familles au sein d'un maillage, les numéros d'indice vont de 1 à "n".
- Nouvelle fonctionnalité MED-fichier V2.2 :
  - Simplification de l'API sur les familles : V2.1 : MEDnFam/efnfam => V2.2 : MEDnFam/efnfam + MEDnAttribut/efnatt + MEDnGroupe/efngro.

# Lecture des informations sur une famille

### Version C

- Nom : MEDfamInfo
- Signature :

      med_err
      MEDfamInfo(med_idt fid,char *maa,int ind, char *fam,
      	   med_int *num,
      	   med_int *attide, med_int *attval, char *attdes,
      	   med_int *natt, char *gro,med_int *ngro)

- Paramètres :
  - fid (IN) : descripteur du fichier.
  - maa (IN) : nom du maillage.
  - ind (IN) : indice de la famille dans le maillage.
  - fam (OUT) : nom de la famille.
  - num (OUT) : numéro de la famille.
  - attide (OUT) : liste des identificateurs des attributs.
  - attval (OUT) : liste des valeurs des attributs.
  - attdes (OUT) : liste des descripteurs des attributs.
  - natt (OUT): nombre d'attribut.
  - gro (OUT): liste des groupes.
  - ngro (OUT) : nombre de groupe.
- Code retourné : 0 si réussite, -1 sinon.

### Version FORTRAN

- Nom : effami
- Signature :

            subroutine effami(fid,maa,ind,fam,num,attid,attval,attdes,
           1     natt,gro,ngro,cret)
            integer fid,num,attid(*),attval(*),natt,ngro,cret,ind
            character *(*) maa,fam,attdes,gro

- Paramètres :
  - fid (IN) : descripteur du fichier.
  - maa (IN) : nom du maillage.
  - ind (IN) : indice de la famille dans le maillage.
  - fam (OUT) : nom de la famille.
  - num (OUT) : numéro de la famille.
  - attide (OUT) : liste des identificateurs des attributs.
  - attval (OUT) : liste des valeurs des attributs.
  - attdes (OUT) : liste des descripteurs des attributs.
  - natt (OUT): nombre d'attribut.
  - gro (OUT): liste des groupes.
  - ngro (OUT) : nombre de groupe.
  - cret (OUT) : code de retour, 0 si réussite, -1 sinon.

### Description

Lecture des informations sur une famille. Les données lues sont :

- Le nom.
- Le numéro.
- Les attributs.
- Les groupes.

### Remarques

- Le nom du maillage est une chaîne de MED_TAILLE_NOM caractères en Fortran (au plus MED_TAILLE_NOM en C).
- Les familles sont identifiées par un nom et un numéro. Le nom d'une famille est une chaîne de MED_TAILLE_NOM caractères en Fortran (au plus MED_TAILLE_NOM en C). Le numéro d'une famille de noeuds doit être positif ou nul, le numéro d'une famille d'éléments doit être négatif ou nul.
- Une famille est composée de :
  - Une liste d'attributs de valeurs entières (éventuellement vide).
  - Une liste de noms de groupes (éventuellement vide).
- Chaque attribut de famille est composé de :
  - Un descripteur entier qui correspond à un numéro d'ordre dans la liste.
  - Une valeur entière.
  - Un descripteur qui est une chaîne de MED_TAILLE_DESC (200) caractères.
  Les descripteurs et les valeurs sont stockés dans deux listes distinctes qui sont des tableaux d'entiers de taille "natt". Les descripteurs sont stockés dans un tableau de caractères.
- Chaque nom de groupe comprend MED_TAILLE_LNOM (80) caractères.
- Evolutions apportées par MED-fichier V2.2 :
  - Une famille de noeuds peut porter le même nom qu'un famille d'éléments. Par contre les familles d'éléments (respectivement de noeuds) doivent toutes avoir des noms différents.

# Conversion d'une liste de groupes en familles et écriture des familles dans un maillage

### Version C

- Nom : MEDgro2famCr
- Signature :

      med_err
      MEDgro2famCr(med_idt fid,char *maillage,char *groupes,med_int *index,med_int ngroup,med_int *entites,
      	     med_int nent,med_entite_maillage typent,med_geometrie_element *typgeo,med_int *indgeo,
      	     med_int ngeo)

- Paramètres :
  - fid (IN) : descripteur du fichier.
  - maillage (IN) : nom du maillage.
  - groupes (IN) : liste des noms des groupes.
  - index (IN) : index de répartition entre les différents groupes des entités référencées dans "entite".
  - ngroup (IN) : nombre de groupes.
  - entite (IN) : liste des numéros des entités de chaque groupe.
  - nent (IN) : nombre d'entités.
  - typent (IN) : type des entités.
  - typgeo (IN) : liste des types géométriques.
  - indgeo (IN) : index de répartition des types géométriques sur les entités.
  - ngeo (IN) : nombre de type géométrique dans "typgeo".
- Code retourné : 0 si réussite, -1 sinon.

### Version FORTRAN

- Nom : efg2fc
- Signature :

            subroutine efg2fc(fid,maa,nomgro,ind,ngro,entite,nent,
           &                  typent,typgeo,indgeo,ngeo,cret)

              integer          fid,cret,ngro,nent,typent,ngeo
              character*32     maa
              character *80    nomgro(*)
              integer          ind(*),indgeo(*),entite(*),typgeo(*)

- Paramètres :
  - fid (IN) : descripteur du fichier.
  - maa (IN) : nom du maillage.
  - nomgro (IN) : liste des noms des groupes.
  - index (IN) : index de répartition entre les différents groupes des entités référencées dans "entite".
  - ngro (IN) : nombre de groupes.
  - entite (IN) : liste des numéros des entités de chaque groupe.
  - nent (IN) : nombre d'entités.
  - typent (IN) : type des entités.
  - typgeo (IN) : liste des types géométriques.
  - indgeo (IN) : index de répartition des types géométriques sur les entités.
  - ngeo (IN) : nombre de type géométrique dans "typgeo".
  - cret (OUT) : code de retour, 0 si réussite, -1 sinon.

### Description

Cette routine permet de :

- Convertir une liste de groupes d'entités en familles d'entités.
- Créer ces familles dans le maillage.
- Ecrire les numéros des familles des entités dans le maillage.

### Remarques

- Le nom du maillage est une chaîne de MED_TAILLE_NOM caractères en Fortran (au plus MED_TAILLE_NOM en C).
- Chaque nom de groupes comprend MED_TAILLE_LNOM (80) caractères.
- Le tableau "entite" contient la liste des numéros des entités de chaque groupe.
- Le tableau "index" définit la répartition des entités entre chaque groupe. Par convention dans MED, les numéros d'index commencent à toujours à 1.
- Le paramètre "typent" spécifie le type des entités : MED_NOEUD, MED_MAILLE, MED_FACE ou MED_ARETE.
- Le tableau "typgeo" contient la liste des entités géométriques référencées. Si les entités sont des noeuds (typent = MED_NOEUD), ce tableau n'est pas pris en compte.
- Le tableau "indgeo" indique le type géométrique de chaque entité : il s'agit d'un tableau d'index sur la liste des numéros des entités rangées selon un ordre croissant des numéros. Si les entités sont des noeuds (typent = MED_NOEUD), ce tableau n'est pas pris en compte.
- Exemple d'illustration : Considérons 3 groupes ("G1", "G2" et "G3"), chaque groupe comportant les entités suivantes (les entités sont référencées par un numéro) :
  - G1 : 1,2.
  - G2 : 3,4,6.
  - G3 : 1,4.
  Considérons que ces entités sont des mailles de type :
  - MED_SEG2 : 1,2,3.
  - MED_TRIA3 : 4,5.
  - MED_TETRA4 : 6.
  Remarque : la maille numéro 5, n'appartient à aucun groupe.
  On fournira donc les paramètres suivants à la routine "MEDgro2famCr/efg2fc" :

           entite = { 1,2, 3,4,6, 1,4 }
           index  = { 1,   3,     6,   8 }
           geo    = { MED_SEG2, MED_TRIA3, MED_TETRA4 }
           indgeo = { 1,4,6,7 }

  Le résultat obtenu porte sur la création de 5 familles dont les numéros et les listes de groupes sont :
  - Numéro : 0 - liste des groupes : aucun groupe par defaut (convention habituelle).
  - Numéro : -1 - liste des groupes : G1,G3.
  - Numéro : -2 - liste des groupes : G1.
  - Numéro : -3 - liste des groupes : G2.
  - Numéro : -4 - liste des groupes : G2,G3.
  Avertissements :
  - La famille de numéro 0 n'est pas créée par "MEDgro2fam/efg2fc", il faut la créer à part à l'aide de la routine "MEDfamCr/effamc".
  - Les numéros des autres familles sont négatifs car il s'agit de familles d'éléments. Ces familles sont créées dans le maillage par "MEDgro2fam/efg2fc".
  - La routine "MEDgro2famCr/efg2fc" en plus de créer les familles, va également écrire les numéros de familles des entités. Pour notre exemple, on aura les numéros de familles suivants :
    - Pour les mailles MED_SEG2 (entités numéros 1, 2 et 3) : -1,-2,-3.
    - Pour les mailles MED_TRIA3 (entités numéros 4 et 5) : -4,0.
    - Pour la maille MED_TETRA4 (entité numéro 6) : -3.
    A noter que la maille 5 n'appartenant à aucun groupe a été rattachée par défaut à la famille 0.

- Nouvelle fonctionnalité MED-fichier V2.2.
  - Cette routine n'a pas été optimisée pour traiter de gros cas. Cette optimisation sera réalisée dans une prochaine version.