##
Documentation de la biliothèque MED-fichier V2.3 : Guide d'utilisation - Module "MED_Entité".

Sommaire de la page

- Introduction
- Modèles de programmation
  - Ecrire les coordonnées des noeuds d'un maillage non structuré
  - Ecrire les coordonnées des noeuds d'un maillage structuré standard
  - Ecrire les coordonnées d'une grille cartésienne ou polaire
  - Lire le nombre de noeuds d'un maillage non structuré ou d'un maillage structuré standard
  - Lire les coordonnées des noeuds d'un maillage non structuré
  - Lire les coordonnées des noeuds d'un maillage structuré standard
  - Lire le nombre d'indices de coordonnées d'une grille cartésienne ou polaire
  - Lire les coordonnées d'une grille cartésienne ou polaire
  - Ecrire la connectivité des éléments géométriques d'un maillage
  - Ecrire la connectivité de mailles polyèdres quelconques
  - Ecrire la connectivité de mailles/faces polygones quelconques
  - Lire le nombre d'éléments dans un maillage
  - Lire la connectivité des éléments géométriques d'un maillage
  - Lire la connectivité de mailles polyèdres quelconques
  - Lire la connectivité de mailles/faces polygones quelconques
  - Ecrire les noms des entités d'un maillage
  - Lire les noms des entités d'un maillage
  - Ecrire les numéros des entités d'un maillage
  - Lire les numéros des entités d'un maillage
  - Ecrire les numéros de famille des entités d'un maillage
  - Lire les numéros de famille des entités d'un maillage
  - Ecrire les noeuds d'un maillage non structuré
  - Lire les noeuds d'un maillage non structuré
  - Ecrire les éléments d'un maillage non structuré
  - Lire les éléments d'un maillage non structuré
- Exemples de programmation
  - Exemple d'écriture des noeuds d'un maillage non structuré
  - Exemple de lecture des noeuds d'un maillage non structuré
  - Exemple d'écriture des coordonnées d'une grille standard et d'une grille cartésienne
  - Exemple de lecture des coordonnées d'une grille standard et d'une grille cartésienne
  - Exemple d'écriture des éléments d'un maillage non structuré
  - Exemple de lecture des éléments d'un maillage non structuré
  - Exemple d'écriture de mailles polyèdres
  - Exemple de lecture de mailles polyèdres
  - Exemple d'écriture de mailles/faces polygones
  - Exemple de lecture de mailles/faces polygones
- Conventions utilisées pour définir les entités d'un maillage MED
  - Convention sur la définition de la connectivité des éléments géométriques
  - Convention sur la définition de la connectivité des mailles de type MED_POLYEDRE
  - Convention sur la définition de la connectivité des mailles/faces de type MED_POLYGONE
  - Convention sur la définition des entités d'un maillage

Retour à la page de garde du guide d'utilisation

# Introduction

Les routines disponibles permettent de :

- Lire et écrire les coordonnées des noeuds d'un maillage non structuré ou d'un maillage structuré de type MED_GRILLE_STANDARD.
- Lire et écrire la structure des coordonnées d'un maillage structuré (NOUVELLE FONCTIONNALITE).
- Lire et écrire les coordonnées des indices d'un axe d'une grille cartésienne ou polaire (NOUVELLE FONCTIONNALITE).
- Lire/écrire les connectivités des mailles/faces/arêtes d'un maillage non structuré. On prend en compte désormais les polyèdres et les polygones quelconques (NOUVELLES FONCTIONNALITES).
- Lire/écrire les noms des entités d'un maillage (noeuds/mailles/faces/arêtes).
- Lire/écrire les numéros des entités d'un maillage (noeuds/mailles/faces/arêtes).
- Lire/écrire les numéros des familles des entités d'un maillage (noeuds/mailles/faces/arêtes).
- Lire le nombre d'entités d'un maillage (noeuds/mailles/faces/arêtes)
- Lire le nombre d'indices présents sur un axe d'une grille cartésienne ou polaire.

On distingue deux niveaux de routines :

1. Les routines élémentaires de niveau 1 qui permettent d'accéder en lecture ou en écriture aux attributs internes des entités (noeuds/mailles/faces/arêtes) d'un maillage MED. Ces routines élémentaires s'adressent à un type d'attribut en particulier (coordonnées des noeuds, connectivité, nom, numéro, numéro de famille).
2. Les routines de niveau 2 qui mutualisent les traitements des routines de niveau 1 : elles permettent de lire ou d'écrire tous les attributs des entités (noeuds/mailles/faces/arêtes) d'un maillage non structuré.

Ces routines sont détaillées dans le guide de référence du module MED_Entité.

# Modèles de programmation

### Ecrire les coordonnées des noeuds d'un maillage non structuré

La routine MEDcoordEcr/efcooe permet d'écrire les coordonnées des noeuds d'un maillage non structuré. Cette routine écrit dans le maillage désigné par son nom :

- Le tableau des coordonnées. Le mode de stockage des coordonnées en mémoire est soit MED_FULL_INTERLACE, soit MED_NO_INTERLACE.
- Le type du repère dans lequel sont définies les coordonnées :
  - MED_CART : cartésien.
  - MED_CYL : cylindrique.
  - MED_SPHER : sphérique.
- Les noms et unités des coordonnées.

### Ecrire les coordonnées des noeuds d'un maillage structuré standard

La routine MEDstructureCoordEcr/efscoe permet de définir la structure des coordonnées d'une grille de type MED_GRILLE_STANDARD. Cette structure est définie par un tableau d'entiers mono dimensionnel dont la taille est celle de la dimension du maillage. Chaque élément contient le nombre d'indices par dimension (axe) de la grille. Par exemple, la structure pour définir une grille 5x3 correspondra à un tableau entier à 2 éléments : int structure[2] = {5,3}.

La routine MEDcoordEcr/efcooe permet ensuite d'écrire les coordonnées des noeuds du maillage. Cette routine écrit dans le maillage :

- Le tableau des coordonnées. Le mode de stockage des coordonnées en mémoire est soit MED_FULL_INTERLACE, soit MED_NO_INTERLACE.
- Le type du repère dans lequel sont définies les coordonnées :
  - MED_CART : cartésien.
  - MED_CYL : cylindrique.
  - MED_SPHER : sphérique.
- Les noms et unités des coordonnées.

### Ecrire les coordonnées d'une grille cartésienne ou polaire

L'écriture des coordonnées d'un maillage structuré correspondant à une grille MED_GRILLE_CARTESIENNE ou MED_GRILLE_POLAIRE ne nécessite que l'écriture des indices de coordonnées selon chacun des axes de la grille.

La routine MEDindicesCoordEcr/eficoe permet l'écriture des indices d'un axe donné. Cette routine écrit dans le maillage :

- Le tableau des indices de coordonnées.
- Le nom de l'axe (Exemples : X, Y, Z, R, ... ).
- L'unité des indices de coordonnées (Exemple : cm).

Remarque :

- Il faut appeler cette routine pour chacun des axes de la grille.

### Lire le nombre de noeuds d'un maillage non structuré ou d'un maillage structuré standard

La routine MEDnEntMaa/efnema permet de lire le nombre de noeuds dans un maillage non structuré (MED_NON_STRUCTURE) ou dans un maillage structuré (MED_STRUCTURE) correspondant à une grille de type MED_GRILLE_STANDARD.

### Lire les coordonnées des noeuds d'un maillage non structuré

La routine MEDcoordLire/efcool permet de lire les coordonnées des noeuds d'un maillage non structuré. Cette routine lit dans le maillage désigné par son nom :

- Le tableau des coordonnées. Le mode de stockage des coordonnées en mémoire est soit MED_FULL_INTERLACE, soit MED_NO_INTERLACE.
- Le type du repère dans lequel sont définies les coordonnées :
  - MED_CART : cartésien.
  - MED_CYL : cylindrique.
  - MED_SPHER : sphérique.
- Les noms et unités des coordonnées.

Remarque :

- Avant de lire les coordonnées, il faut allouer la mémoire necessaire au stockage de ces coordonnées. Pour cela, il faut connaître
  - La dimension du maillage ou si elle est différente celle de l'espace du domaine de calcul. Ces informations sont fournies par les routines MEDmaaInfo/efmaai et MEDdimEspaceLire/efespl.
  - Le nombre de noeuds du maillage. Cette information est fournie par la routine MEDnEntMaa/efnema.

### Lire les coordonnées des noeuds d'un maillage structuré standard

La routine MEDstructureCoordLire/efscol permet de lire la structure des coordonnées d'une grille de type MED_GRILLE_STANDARD. Cette structure est définie par un tableau d'entiers mono dimensionnel dont la taille est celle de la dimension du maillage. Chaque élément contient le nombre d'indices par dimension (axe) de la grille. Par exemple, la structure pour définir une grille 5x3 correspondra à un tableau entier à 2 éléments : int structure[2] = {5,3}.

La routine MEDcoordLire/efcool permet ensuite de lire les coordonnées des noeuds du maillage. Cette routine lit dans le maillage :

- Le tableau des coordonnées. Le mode de stockage des coordonnées en mémoire est soit MED_FULL_INTERLACE, soit MED_NO_INTERLACE.
- Le type du repère dans lequel sont définies les coordonnées :
  - MED_CART : cartésien.
  - MED_CYL : cylindrique.
  - MED_SPHER : sphérique.
- Les noms et unités des coordonnées.

Remarque :

- Avant de lire les coordonnées, il faut allouer la mémoire necessaire au stockage de ces coordonnées et du tableau de structure des coordonnées. Pour cela, il faut connaître :
  - La dimension du maillage. Cette information est fournie par la routine MEDmaaInfo/efmaai.
  - Le nombre de noeuds du maillage. Cette information est fournie par la routine MEDnEntMaa/efnema.

### Lire le nombre d'indice de coordonnées d'une grille cartésienne ou polaire

La routine MEDnEntMaa/efnema permet de lire dans un grille cartésienne ou polaire le nombre d'indices de coordonnées selon un axe donné.

### Lire les coordonnées d'une grille cartésienne ou polaire

La lecture se fait axe d'indices de coordonnées par axe d'indices de coordonnées.

Pour un axe donné, il s'agit de :

- Lire le nombre d'indice sur l'axe. La routine MEDnEntMaa/efnema permet de lire cette information.
- Allouer la mémoire nécessaire au stockage des indices.
- Lire les indices de coordonées de l'axe. La routine MEDindicesCoordLire/eficol pemet de réaliser cette opération. Les données lues sont
  - Les indices des coordonnées.
  - Le nom de l'axe. (Exemples : X, Y, Z, R, ... ).
  - L'unité des indices de coordonnées (Exemple : cm).

### Ecrire la connectivité des éléments géométriques d'un maillage

L'écriture s'effectue type d'entité par type d'entité (MED_MAILLE, MED_FACE, MED_ARETE) et ne concerne que les maillages non stucturés. A noter qu'en mode de connectivité nodale, on ne doit écrire que les mailles, les entités MED_FACE et MED_ARETE n'étant utilisées que pour la connectivité descendante.

La routine MEDconnEcr/efcone permet l'écriture dans un maillage de type MED_NON_STRUCTURE, de la connectivité d'un type géométrique pour un type d'élément donné. Les données écrites sont :

- Le tableau des connectivités.

Remarque :

- Le mode de définition de la connectivité des éléments d'un maillage MED est défini dans la rubrique Convention sur la définition de la connectivité des éléments géométriques.

### Ecrire la connectivité de mailles polyèdres quelconques

En plus des types géométriques prédéfinis dans MED (MED_SEG2,MED_SEG3, MED_TRIA3, ...), il est possible d'écrire la connectivité de mailles correspondant à des polyèdres quelconques (référencés dans MED par le mot clé MED_POLYEDRE).

L'écriture de la connectivité des mailles de type MED_POLYEDRE est réalisée par la routine MEDpolyedreConnEcr/efpece.

Remarque :

- Le mode de définition de la connectivité des polyèdres est défini dans la rubrique Convention sur la définition de la connectivité des mailles de type MED_POLYEDRE.

### Ecrire la connectivité de mailles/faces polygones quelconques

En plus des types géométriques prédéfinis dans MED (MED_SEG2,MED_SEG3, MED_TRIA3, ...), il est possible d'écrire la connectivité de mailles/faces correspondant à des polygones quelconques (référencés dans MED par le mot clé MED_POLYGONE).

L'écriture de la connectivité des mailles/faces de type MED_POLYGONE est réalisée par la routine MEDpolygoneConnEcr/efpgce.

Remarque :

- Le mode de définition de la connectivité des polygones est défini dans la rubrique Convention sur la définition de la connectivité des mailles/faces de type MED_POLYGONE.

### Lire le nombre d'éléments dans un maillage

La lecture des nombres d'éléments dans un maillage s'effectue type d'entité par type d'entité (MED_MAILLE, MED_FACE, MED_ARETE) et ne concerne que les maillages non stucturés. A noter qu'en mode de connectivité nodale, on ne doit lire que les mailles, les entités MED_FACE et MED_ARETE n'étant utilisées que pour la connectivité descendante.

La routine MEDnEntMaa/efnema permet de lire le nombre d'éléments correspondant à un type géométrique donné dans un maillage non structuré.

### Lire la connectivité des éléments géométriques d'un maillage

La lecture s'effectue type d'entité par type d'entité (MED_MAILLE, MED_FACE, MED_ARETE) et ne concerne que les maillages non stucturés. A noter qu'en mode de connectivité nodale, on ne doit lire que les mailles, les entités MED_FACE et MED_ARETE n'étant utilisées que pour la connectivité descendante.

Pour un type d'élément géométrique donné, il sagit de :

- Connaître le nombre d'éléments de ce type présents dans le maillage.
- La routine MEDconnLire/efconl permet la lecture dans un maillage de type MED_NON_STRUCTURE, de la connectivité d'un type géométrique pour un type d'élément donné.

Les données lues sont :

- Le tableau des connectivités.

Remarque :

- Le mode de définition de la connectivité des éléments d'un maillage MED est défini dans la rubrique Convention sur la définition de la connectivité des éléments géométriques.

### Lire la connectivité de mailles polyèdres quelconques

En plus des types géométriques prédéfinis dans MED (MED_SEG2,MED_SEG3, MED_TRIA3, ...), il est possible de lire la connectivité de mailles correspondant à des polyèdres quelconques (référencés dans MED par le mot clé MED_POLYEDRE).

Pour récupérer le nombre de polyèdres, il faut utiliser la routine MEDnEntMaa/efnema. La lecture de la connectivité des mailles de type MED_POLYEDRE est réalisée par 2 routines :

- La routine MEDpolyedreInfo/efpyei permet de lire la taille des tableaux qu'il faudra passer en paramètre à la routine MEDpolyedreConnLire/efpecl.
- La routine MEDpolyedreConnLire/efpecl va lire dans le maillage la connectivité des mailles polyèdres.

Remarque :

- Le mode de définition de la connectivité des polyèdres est défini dans la rubrique Convention sur la définition de la connectivité des mailles de type MED_POLYEDRE.

### Lire la connectivité de mailles/faces polygones quelconques

En plus des types géométriques prédéfinis dans MED (MED_SEG2,MED_SEG3, MED_TRIA3, ...), il est possible de lire la connectivité de mailles/faces correspondant à des polygones quelconques (référencés dans MED par le mot clé MED_POLYGONE).

Pour récupérer le nombre de polygone, il faut utiliser la routine MEDnEntMaa/efnema. La lecture de la connectivité des mailles/faces de type MED_POLYGONE est réalisée par 2 routines :

- La routine MEDpolygoneInfo/efpygi permet de lire la taille des tableaux qu'il faudra passer en paramètre à la routine MEDpolygoneConnLire/efpgcl.
- La routine MEDpolygoneConnLire/efpgcl va lire dans le maillage la connectivité des mailles/faces polygones.

Remarque :

- Le mode de définition de la connectivité des polygones est défini dans la rubrique Convention sur la définition de la connectivité des mailles/faces de type MED_POLYGONE.

### Ecrire les noms des entités d'un maillage

La routine MEDnomEcr/efnome permet d'écrire les noms des entités d'un maillage.

### Lire les noms des entités d'un maillage

La routine MEDnomLire/efnoml permet de lire les noms des entités d'un maillage.

### Ecrire les numéros des entités d'un maillage

La routine MEDnumEcr/efnume permet d'écrire les numéros des entités d'un maillage.

### Lire les numéros des entités d'un maillage

La routine MEDnumLire/efnuml permet de lire les numéros des entités d'un maillage.

### Ecrire les numéros de famille des entités d'un maillage

La routine MEDfamEcr/effame permet d'écrire les numéros des familles des entités d'un maillage.

### Lire les numéros de famille des entités d'un maillage

La routine MEDfamLire/effaml permet de lire les numéros des familles des entités d'un maillage.

### Ecrire les noeuds d'un maillage non structuré

La routine MEDnoeudsEcr/efnoee permet l'écriture dans un maillage non structuré des informations relatives aux noeuds de ce maillage. Cette routine est équivalente aux appels successifs aux routines élémentaires :

- Ecriture des coordonnées (MEDcoordEcr/efcooe).
- Ecriture des noms (MEDnomEcr/efnome).
- Ecriture des numéros (MEDnumEcr/efnume).
- Ecriture des numéros des familles (MEDfamEcr/effame).

### Lire les noeuds d'un maillage non structuré

La routine MEDnoeudsLire/efnoel permet la lecture dans un maillage non structuré de toutes les informations relatives aux noeuds de ce maillage. Cette routine est équivalente aux appels successifs des routines élémentaires suivantes :

- Lecture des coordonnées (MEDcoordLire/efcool).
- Lecture des noms (MEDnomLire/efnoml).
- Lecture des numéros (MEDnumLire/efnuml).
- Lecture des numéros des familles (MEDfamLire/effaml).

### Ecrire les éléments d'un maillage non structuré

La routine MEDelementsEcr/efelee permet l'écriture dans un maillage non structuré des éléments géométriques de ce maillage, à l'exception des mailles MED_POLYEDRE et des mailles/faces MED_POLYGONE. Cette routine est équivalente aux appels successifs des routines élémentaires :

- Ecriture des connectivités (MEDconnEcr/efcone).
- Ecriture des noms (MEDnomEcr/efnome).
- Ecriture des numéros (MEDnumEcr/efnume).
- Ecriture des numéros des familles (MEDfamEcr/effame).

### Lire les éléments d'un maillage non structuré

La routine MEDelementsLire/efelel permet l'écriture dans un maillage non structuré des éléments géométriques de ce maillage, à l'exception des mailles MED_POLYEDRE et des mailles/faces MED_POLYGONE. Cette routine est équivalente aux appels successifs des routines élémentaires :

- Ecriture des connectivités (MEDconnLire/efconl).
- Ecriture des noms (MEDnomLire/efnoml).
- Ecriture des numéros (MEDnumLire/efnuml).
- Ecriture des numéros des familles (MEDfamLire/effaml).

# Exemples de programmation

### Exemple d'écriture des noeuds d'un maillage non structuré

Le programme suivant utilise les routines de base sur les noeuds pour :

- Créer un le fichier de nom "test4.med".
- Créer un maillage MED_NON_STRUCTURE.
- Ecrire les coordonnées des noeuds du maillage.
- Ecrire les noms des noeuds du maillage.
- Ecrire les numéros des noeuds du maillage.
- Ecrire les numéros de famille des noeuds du maillage.
- Fermer le fichier "test4.med".

Accès aux sources :

- Version C.
- Version FORTRAN.

Le second programme fait la même chose que le programme précédent mais en utilisant la routine MEDnoeudsEcr/efnoee.

Accès aux sources :

- Version C.
- Version FORTRAN.

### Exemple de lecture des noeuds d'un maillage non structuré

Le programme suivant utilise les routines de base sur les noeuds pour :

- Ouvrir en lecture le fichier de nom "test4.med".
- Lire les informations sur le premier maillage (nom, dimension, type, description). Ce maillage est du type MED_NON_STRUCTURE.
- Lire le nombre de noeuds dans le maillage.
- Lire les coordonnées des noeuds du maillage selon la composante n°1 des coordonnées.
- Lire les coordonnées des noeuds du maillage selon la composante n°2 des coordonnées.
- Lire les coordonnées des noeuds du maillage selon la composante n°1 des coordonnées et selon un profil de numéros de noeuds.
- Lire les coordonnées des noeuds du maillage selon toutes les composantes des coordonnées.
- Lire les noms des noeuds du maillage.
- Lire les numéros des noeuds du maillage.
- Lire les numéros de famille des noeuds du maillage.
- Fermer le fichier "test4.med".

Accès aux sources :

- Version C.
- Version FORTRAN.

Le programme suivant permet de :

- Lire les informations sur le premier maillage (nom, dimension, type, description). Ce maillage est du type MED_NON_STRUCTURE.
- Lire le nombre de noeuds dans le maillage.
- Lire les coordonnées des noeuds du maillage.
- Lire les noms des noeuds du maillage.
- Lire les numéros des noeuds du maillage.
- Lire les numéros de famille des noeuds du maillage.

Il utilise pour l'accès aux données des noeuds la routine MEDnoeudsLire/efnoel.

Accès aux sources :

- Version C.
- Version FORTRAN.

### Exemple d'écriture des coordonnées d'une grille standard et d'une grille cartésienne

Le programme suivant permet de :

- Créer le fichier de nom "test27.med".
- Créer dans ce fichier un maillage (MED_NON_STRUCTURE).
- Créer dans ce fichier un maillage structuré (MED_STRUCTURE).
- Ecrire la nature de ce maillage (grille MED_GRILLE_CARTESIENNE).
- Ecrire les indices de coordonnées de cette grille selon les axes "X" et "Y".
- Créer un second maillage structuré.
- Ecrire la nature de ce second maillage (grille MED_GRILLE_STANDARD).
- Ecrire la structure des coordonnées de la grille.
- Ecrire les coordonnées des noeuds de la grille.
- Fermer le fichier "test27.med".

Accès aux sources :

- Version C.
- Version FORTRAN.

### Exemple de lecture des coordonnées d'une grille standard et d'une grille cartésienne

Le programme suivant permet de :

- Ouvrir en lecture le fichier de nom "test27.med".
- Lire le nombre de maillages dans ce fichier.
- Lire les informations sur chaque maillage (nom, dimension, type, description).
- Accéder au maillages structurés :
  - Lire la nature de la grille.
  - Dans la grille MED_GRILLE_CARTESIENNE :
    - Pour chaque axe de la grille :
      - Lire la taille de chaque axe : nombre d'indices.
      - Lire les indices de coordonnées.
    - Dans la grille MED_GRILLE_STANDARD :
      - Lire le nombre de noeuds.
      - Lire la structure des coordonnées de la grille.
      - Lire les coordonnées des noeuds de la grille.
- Fermer le fichier "test27.med".

Accès aux sources :

- Version C.
- Version FORTRAN.

### Exemple d'écriture des éléments d'un maillage non structuré

Le programme suivant utilise les routines de base sur les éléments d'un maillage. Le programme suivant permet de :

- Créer le fichier de nom "test6.med".
- Créer un maillage non structuré.
- Pour les mailles de type MED_SEG2 et MED_TRIA3 :
  - Ecrire la connectivité descendante de mailles.
  - Ecrire les noms des mailles.
  - Ecrire les numéros des mailles.
  - Ecrire les numéros de familles des mailles.
- Fermer le fichier "test6.med".

Accès aux sources :

- Version C.
- Version FORTRAN.

Le programme suivant utilise la routine haut niveau MEDelementsEcr/efelee. Les écritures sont identiques à celles pratiquées dans le programme précédent.

Accès aux sources :

- Version C.
- Version FORTRAN.

### Exemple de lecture des éléments d'un maillage non structuré

Le programme suivant utilise les routines de base pour accéder aux mailles déposées dans le fichier "test6.med". Les traitements de ce programme consistent à :

- Ouvrir en lecture le fichier de nom "test6.med".
- Lire les informations sur le premier et unique maillage (nom, dimension, type, description).
- Lire le nombre de mailles de type MED_SEG2 et MED_TRIA3.
- Pour chaque type de maille :
  - Lire la connectivité descendante des mailles.
  - Lire les noms des mailles.
  - Lire les numéros des mailles.
  - Lire les numéros de familles des mailles.
- Fermer le fichier "test6.med".

Accès aux sources :

- Version C.
- Version FORTRAN.

Le programme suivant utilise la routine haut niveau MEDelementsLire/efelel. Les traitements réalisés sont identiques à ceux du programme précédent.

Accès aux sources :

- Version C.
- Version FORTRAN.

### Exemple d'écriture de mailles polyèdres

Le programme suivant permet de :

- Créer un fichier de nom "test25.med".
- Créer un maillage non structuré.
- Ecrire les connectivités de mailles de type MED_POLYEDRE.
- Ecrire les noms des mailles.
- Ecrire les numéros des mailles.
- Ecrire les numéros de familles des mailles.
- Fermer le fichier "test25.med".

Accès aux sources :

- Version C.
- Version FORTRAN.

### Exemple de lecture de mailles polyèdres

Le programme suivant permet de :

- Ouvrir le fichier de nom "test25.med" en lecture.
- Lire le nombre de maillage dans le fichier.
- Pour chaque maillage :
  - Lire les informations sur le maillage (nom, dimension, type, description).
  - Lire le nombre de mailles de type MED_POLYEDRE.
  - Lire les informations sur les mailles MED_POLYEDRE.
  - Lire la connectivité des mailles.
  - Lire les noms des mailles.
  - Lire les numéros des mailles.
  - Lire les numéros de famille des mailles.
- Fermer le fichier "test25.med".

Accès aux sources :

- Version C.
- Version FORTRAN.

### Exemple d'écriture de mailles/faces polygones

Le programme suivant permet de :

- Créer un fichier de nom "test23.med".
- Créer un maillage non structuré.
- Ecrire dans ce maillage la connectivité de mailles de type MED_POLYGONE.
- Ecrire les noms des mailles.
- Ecrire les numéros des mailles.
- Ecrire les numéros de familles des mailles.
- Fermer le fichier "test23.med".

Accès aux sources :

- Version C.
- Version FORTRAN.

### Exemple de lecture de mailles/faces polygones

Le programme suivant permet de :

- Ouvrir le fichier de nom "test23.med" en lecture.
- Lire le nombre de maillage dans le fichier.
- Pour chaque maillage :
  - Lire les informations sur le maillage (nom, dimension, type, description).
  - Lire le nombre de mailles de type MED_POLYGONE.
  - Lire les informations sur les mailles MED_POLYGONE.
  - Lire la connectivité des mailles.
  - Lire les noms des mailles.
  - Lire les numéros des mailles.
  - Lire les numéros de famille des mailles.
- Fermer le fichier "test23.med".

Accès aux sources :

- Version C.
- Version FORTRAN.

# Conventions utilisées pour définir les entités d'un maillage MED

- Quelque soit le type de connectivité (nodale/descendante), la numérotation optionnelle n'est jamais utilisée dans la définition des connectivités.
- Tous les éléments ont une numérotation propre à leur type géométrique. Par exemple, la définition d'une connectivité descendante MED_HEXA8 se base sur des faces MED_QUAD4 numérotés de 1..nq où nq correspond au nombre de faces MED_QUAD4. Une numérotion globale implicite existe sur les éléments, elle consiste à parcourir l'ensemble des types géométrique dans l'ordre de définition du modèle de données.

### Convention sur la définition de la connectivité des éléments géométriques

La convention suivante est à appliquer pour la définition du tableau de connectivité des élements d'un maillage non structuré qui est passé en paramètres aux routines MEDconnEcr/efcone, MEDconnLire/efconl, MEDelementsEcr/efelee et MEDelementsLire/efelel :

- Le tableau des connectivités est un tableau à 1 dimension de taille égale à "n * T" où n est le nombre d'éléments et T correspond à la taille mémoire (nombre d'entiers) nécessaire au stockage de la connectivité de l'entité géométrique considérée.
- Le mode de stockage du tableau des connectivités en mémoire est soit MED_FULL_INTERLACE, soit MED_NO_INTERLACE.
- Le type de connectivité peut-être : nodale (MED_NOD) ou descendante (MED_DESC).
- Règles à appliquer pour définir la taille mémoire "T" nécessaire au stockage de la connectivité d'une entité géométrique :
  Pour calculer la taille "T" d'une entité géométrique dans le tableau de connectivité, on adopte les conventions suivantes :
  1. Dans le cas de la connectivité nodale :"T" = nombre de noeuds.
  2. Dans le cas de la connectivité descendante :
     1. Entité de dimension 3 : "T" = nombre de faces.
     2. Entité de dimension 2 : "T" = nombre d'arêtes.
     3. Entité de dimension 1 : "T" = nombre de noeuds.

### Convention sur la définition de la connectivité des mailles de type MED_POLYEDRE

Pour décrire la géométrie et la connectivité de ces mailles, nous adopterons les conventions suivantes selon le mode de connectivité choisi :

- Stockage des données en mémoire en connectivité nodale (typcon = MED_NOD) :
  - On accède aux connectivités via un système de double indexation :
    1. Le premier tableau "indexp" renvoie à la liste des faces de chaque polyèdre.
    2. Le second tableau "indexf" renvoie pour chaque face à la liste des noeuds qui la composent.
  - Exemple d'illustration pour définir la connecitivté de "n" polyèdres :

  - A noter que :
    - Les faces communes sont décrites 2 fois (mêmes listes de noeuds mais orientations différentes).
    - La normale des faces doit être extérieure.
- Stockage des données en mémoire en connectivité descendante (typcon = MED_DESC) :
  - En connectivité descendante, un seul niveau d'indexation suffit (indexp). Le tableau des connectivités contient les numéros des faces. Le tableau "indexf" contient alors le type géométrique de chaque face (exemple : MED_TRIA3). A noter que dans ce cas, "nf = consiz".
  - Exemple d'illustration :

### Convention sur la définition de la connectivité des mailles/faces de type MED_POLYGONE

Pour décrire la géométrie et la connectivité de ces mailles/faces, nous adopterons les conventions suivantes selon le mode de connectivité choisi :

- Le mode de stockage est libre -i.e. n'est pas régi par l'ordre des types géométriques (donné par le nombre de sommets). Exemple : si on a 2 polygones à 5 sommets (P5) et 1 polygone à 6 sommets (P6), on peut stocker les connectivités de ces éléments de la manière suivante : P5, P6, P5.
- On accède à la connectivité de chaque polygone par l'intermédiaire du tableau d'index. Pour notre exemple cela revient à avoir les 2 tableaux suivants (les index dans MED débutent par convention à l'indice 1) :

- En connectivité nodale MED, les entiers stockés dans le tableau des connectivités correspondent à des numéros de noeuds alors qu'en connectivité descendante, ils correspondent à des numéros d'arêtes.

### Convention sur la définition des entités d'un maillage

Maillage structuré

Un maillage structuré (MED_STRUCTURE) est défini par ses noeuds. La définition de la connectivité des éléments est implicite. L'ensembles des conventions (indexation, numérotation des noeuds et des éléments, définition des coordonnées) sur les maillages structurés sont décrites dans le modèle de données.

##### Grille de type MED_GRILLE_STANDARD

On doit pouvoir écrire/lire pour ce qui concerne les noeuds :

- La structure des coordonnées de la grille.
- Les coordonnées des noeuds du maillage.
- Les noms des noeuds (optionnel).
- Les numéros des noeuds (optionnel).
- Les numéros de famille de noeuds. Si les numéros ne sont pas sauvegardés dans un maillage, cela signifie que tous les noeud du maillage sont rattachés par défaut à la famille 0.

Pour chaque type d'élément, il faut pouvoir écrire/lire pour chaque type géométrique :

- Les noms associés aux éléments (optionnel).
- Les numéros associés aux éléments (optionnel).
- Les numéros des familles associées aux éléments (obligatoire). Si les numéros ne sont pas sauvegardés dans un maillage pour un type géométrique donné (exemple : mailles de type MED_QUAD4), cela signifie que tous les éléments concernées sont rattachés par défaut à la famille 0.

Si les noms et numéros existent, ils doivent être présents pour toutes les entités géométriques.

##### Grille de type MED_GRILLE_CARTESIENNE ou MED_GRILLE_POLAIRE

On doit pouvoir écrire/lire pour ce qui concerne les noeuds :

- Les indices de coordonnées selon chacun des axes.
- Les noms des noeuds (optionnel).
- Les numéros des noeuds (optionnel).
- Les numéros de famille de noeuds. Si les numéros ne sont pas sauvegardés dans un maillage donné, cela signifie que tous les noeud du maillage sont rattachés par défaut à la famille 0.

Pour chaque type d'élément, il faut pouvoir écrire/lire pour chaque type géométrique :

- Les noms associés aux éléments (optionnel).
- Les numéros associés aux éléments (optionnel).
- Les numéros des familles associées aux éléments (obligatoire). Si les numéros ne sont pas sauvegardés dans un maillage pour un type géométrique donné (exemple : mailles de type MED_QUAD4), cela signifie que tous les éléments concernées sont rattachés par défaut à la famille 0.

Si les noms et numéros existent, ils doivent être présents pour toutes les entités géométriques.

Maillage non structuré

Pour un maillage non structuré (MED_NON_STRUCTURE), on doit pouvoir écrire/lire les noeuds et les éléments du maillage.

Pour ce qui concerne les noeuds, on doit pouvoir écrire/lire :

- Les coordonnées des noeuds du maillage.
- Les noms des noeuds (optionnel).
- Les numéros des noeuds (optionnel).
- Les numéros de famille de noeuds. Si les numéros ne sont pas sauvegardés dans un maillage donné, cela signifie que tous les noeuds du maillage sont rattachés par défaut à la famille 0.

Pour chaque type d'élément, il faut pouvoir écrire/lire pour chaque type géométrique :

- La connectivité (obligatoire).
- Les noms associés aux éléments (optionnel).
- Les numéros associés aux éléments (optionnel).
- Les numéros des familles associées aux éléments (obligatoire). Si les numéros ne sont pas sauvegardés dans un maillage pour un type géométrique donné (exemple : mailles de type MED_TRIA3), cela signifie que tous les éléments concernées sont rattachés par défaut à la famille 0.

Si les noms et numéros existent, ils doivent être présents pour toutes les entités géométriques.