##
Documentation de la bibliothèque MED-fichier V2.3 : Guide d'utilisation - Module "MED_Joint".

Sommaire de la page

- Introduction
  - Qu'est ce qui définit un maillage distribué?
  - Routines disponibles
  - Un fichier maître et un sous-fichier par sous-domaine
- Modèles de programmation
  - Créer un joint dans un maillage
  - Ecrire un tableau de correspondances dans un joint
  - Lire le nombre de joints dans un maillage
  - Accéder aux joints dans un maillage
  - Lire les informations sur un joint
  - Accéder aux tableaux de correspondances dans un joint
  - Lire le nombre de correspondance dans un tableau de correspondances
  - Lire un tableau de correspondance dans un joint
- Exemples de programmation
  - Exemple de création d'un joint dans un maillage
  - Exemple de lecture de toutes les joint d'un maillage
  - Exemple d'ajout d'une numérotation globale dans un maillage
  - Exemple de lecture d'une numérotation globale dans un maillage
- Conventions sur la définition des correspondances dans une joint

Retour à la page de garde du guide utilisateur

# Introduction

### Qu'est ce qui définit un maillage distribué?

En vue de calculs parallèles, le domaine de calcul est subdivisé en sous-domaines où se répartissent les maillages. Classiquement, chaque sous-domaine sera traité par un seul processeur qui aura uniquement accès aux données des autres sous-domaines par l'intermédiaire de messages.
Du point de vue du stockage, un maillage distribué a la même structure qu'un maillage MED classique mais ses composantes (entités géométrique, familles, groupes) peuvent être réparties sur plusieurs sous-domaines affectés à des processeurs disjoints. Lors de cette distribution certains sommets, faces, arrêtes ou mailles se retrouvent sur la frontière commune de deux sous-domaines. L'ensemble de ces éléments communs à deux sous-domaines constitue un joint. Dans un cadre très général, les éléments communs à deux sous-domaines peuvent apparaître comme :

- La jointure de deux maillages qui se correspondent parfaitement : on parle alors de <it> raccordement conforme</it>
- La jointure de deux maillages de pavage différent : <it> raccordement non conforme</it>
- Le recouvrement de deux maillages qu'il soit conforme ou non.

La notion de joint est assez générale pour permettre de socker ces trois types d'interface. Elle consiste à donner la liste des couples des numéros correspondant des entités en regard vues du domaine local et vues du domaine distant.
Un maillage distribué est donc entièrement déterminé par la donnée

1. des maillages affectés à chacun des sous-domaines,
2. par la définition de « joints » - raccord entre les maillages de sous-domaines voisins,
3. par une numérotation globale optionnelle des entités.

### Un fichier maître et un sous-fichier par sous-domaine

Comme les maillages sont distribués, les données MED s’y rattachant peuvent être stockées dans plusieurs fichiers. La liste de ces fichiers est rassemblée dans un fichier maître au format ASCII . Ce fichier permet de repérer où se trouvent stockées les parties de maillages distribuées correspondant à chaque sous-domaine. Il contient :

- Un entête d’identification : <it># MED Fichier v 2.3 </it>
- Le nombre de sous-domaines sur lesquels sont distribués les maillages
- Les informations nécessaires pour repérer les parties de maillages affectés à chaque sous-domaine. Pour ce faire, il y a autant de lignes que de parties de maillages distribués. Chaque ligne se compose :
  - Du nom de maillage global
  - Du numero de sous-domaine concerné
  - Du nom de maillage local correspondant au maillage global sur ce sous-domaine
  - Du nom d’hôte de la machine hébergeant le fichier MED contenant ces informations Ce nom d’hôte peut éventuellement être l’adresse IP de la machine. Il ne comportera pas de blanc.
  - Du chemin absolu ou relatif menant à ce fichier

Le fichier ASCII sera au format unix, et le retour à la ligne est un caractère ASCII 10 (caractère Carriage Return seul sans caractère Line Feed comme sous windows).
Dans les chemins, les sous répertoires seront délimités par le caractère '/’. Toute ligne commençant par '#’ sera ignorée par la librairie (commentaires). Mais un '#’ en cours de ligne ne sera pas interprété comme un commentaire.
Les fichiers MED correspondant à chaque sous-domaine sont repérés par leur chemin absolu ou relatif dans le système de fichier. Dans le cas relatif, l’accès aux fichiers depuis la librairie pourra dépendre de la machine ou du système d’exploitation sur lequel on s’exécute. A charge de l’utilisateur de vérifier l’interprétation cohérente des chemins de fichiers relatifs.
Voici un exemple de fichier maître, décrivant la répartition de 2 maillages VIT et TEMP sur 4 sous domaines disjoints. Le calcul s’effectue sur un solide (où seule est définie la température) baigné d’un liquide (ou sont définies les vitesses et températures)

    # MED Fichier v 2.3
    #
    # Nombre de sous-domaines
    4
    #
    # fichiers MED par sous-domaine
    VIT 1 VIT_1 localhost /absolute/path/fichier_dom_1
    VIT 2 VIT_2 localhost /absolute/path/fichier_dom_2
    TEMP 1 TEMP_1 localhost /absolute/path/fichier_dom_1
    TEMP 2 TEMP_2 localhost /absolute/path/fichier_dom_2
    TEMP 3 TEMP_3 localhost /absolute/path/fichier_dom_3
    TEMP 4 TEMP_4 localhost /absolute/path/fichier_dom_4

La création ou la transformation du fichier maître est à la charge du découpeur. On suppose que ce fichier est cohérent dès l’utilisation de la librairie.

### Routines Disponibles

Les routines disponibles permettent de :

- Créer un joint dans un maillage.
- Lire le nombre de joints dans un maillage.
- Lire les informations concernant un joint.
- Ecrire un tableau de correspondances entre binômes d'entités du maillage dans un joint.
- Lire un tableau de correspondances entre binômes d'entités du maillage dans un joint.
- Lire le nombre de couples en correspondance d'un type donné dans un joint.
- Ecrire la numérotation globale associé à un type d'entité pour la repérer sur le domaine global
- Lire la numérotation globale associé à un type d'entité pour la repérer sur le domaine global

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

# Modèles de programmation

### Créer un joint dans un maillage

La routine MEDjointCr/efjntc permet de créer un joint dans un maillage.

Remarques :

- L'écriture des joints dans un maillage est optionnelle : un maillage peut contenir de zéro à plusieurs joints.
- Pour chaque joint, il s'agit :
  - De lr créer.
  - De lui associer des correspondances regroupant des listes de couples d'entités en regard l'une de l'autre.
  - D'associer à chacune de ces correspondances les listes de couples en regard souhaitées.

### Lire le nombre de joint dans un maillage

La routine MEDnJoint/ efnjnt permet de lire le nombre d'équivalence dans un maillage.

Remarques :

- La présence de joints dans un maillage est optionnelle : un maillage peut contenir de zéro à plusieurs joints.

### Accéder aux joints dans un maillage

Dès que l'on connaît le nombre de joints, il est possible d'accéder à chacune d'entre eux par l'intermédiaire d'une boucle. Si on a "N" joints, cette boucle ira de 1 à N. A chaque itération, la valeur du compteur de la boucle est un indice permettant l'accès à un joint donné : voir l'exemple n°2 pour plus de détail.

### Lire les informations sur un joint

La routine MEDjointInfo/efjnti permet de lire les information sur un joint, à savoir :

- Le nom.
- La description.
- Le numéro du sous-domaine en regard (la numérotation des sous-domaines est celle définie dans le fichier maitre).
- le nom des maillages local et distant en regard.

### Ecrire un tableau de correspondances dans un joint

La routine MEDjointEcr/ efjnte permet d'écrire un tableau de correspondance dans un joint pour deux types d'entités en regard (MED_NOEUD, MED_MAILLE, MED_FACE, MED_ARETE). Si cette entité correspond à un élément, il faut en plus préciser le type géométrique de l'élément. Ce type géométrique peut être :

- Pour les noeuds : MED_NONE.
- Pour les mailles : MED_POINT1, MED_SEG2, MED_SEG3, MED_TRIA3, MED_TRIA6, MED_QUAD4, MED_QUAD8, MED_POLYGONE.
- Pour les faces : MED_TRIA3, MED_TRIA6, MED_QUAD4, MED_QUAD8, MED_POLYGONE.
- Pour les arêtes : MED_SEG2 et MED_SEG3.

La définition du tableau de correspondance doit respecter la convention définie dans la rubrique Conventions sur la définition des correspondances dans un joint..

### Accéder aux tableaux de correspondances dans un joint

Dans un joint donné, l'accès aux tableaux de correspondances se fait de la manière suivante :

- Pour chaque couple de types d'entité en regard du maillage :
  - Lire le nombre de correspondance portant sur ces deux types d'entités en regard dans le joint.
  - Si ce nombre est positif, lire le tableau des correspondances.

### Lire le nombre de correspondances dans un tableau de correspondances

La routine MEDjointnCorres/efjnco permet de lire dans un joint le nombre de correspondance pour un couple de types d'entité (MED_NOEUD, MED_MAILLE, MED_FACE, MED_ARETE) en regard. Si une entité correspond à un élément, il faut en plus préciser le type géométrique des éléments. Ce type géométrique peut être :

- Pour les noeuds : MED_NONE.
- Pour les mailles : MED_POINT1, MED_SEG2, MED_SEG3, MED_TRIA3, MED_TRIA6, MED_QUAD4, MED_QUAD8, MED_POLYGONE.
- Pour les faces : MED_TRIA3, MED_TRIA6, MED_QUAD4, MED_QUAD8, MED_POLYGONE.
- Pour les arêtes : MED_SEG2 et MED_SEG3.

### Lire un tableau de correspondance dans un joint

La routine MEDjointLire/efjntl permet de lire un tableau de correspondance dans un joint pour un couple de types d'entité (MED_NOEUD, MED_MAILLE, MED_FACE, MED_ARETE) en regard. Si une entité correspond à un élément, il faut en plus préciser le type géométrique de l'élément. Ce type géométrique peut être :

- Pour les noeuds : MED_NONE.
- Pour les mailles : MED_POINT1, MED_SEG2, MED_SEG3, MED_TRIA3, MED_TRIA6, MED_QUAD4, MED_QUAD8, MED_POLYGONE.
- Pour les faces : MED_TRIA3, MED_TRIA6, MED_QUAD4, MED_QUAD8, MED_POLYGONE.
- Pour les arêtes : MED_SEG2 et MED_SEG3.

La définition du tableau de correspondance récupéré doit respecter la convention définie dans la rubrique Conventions sur la définition des correspondances dans un joint.

# Exemples de programmation

### Exemple de création d'un joint dans un maillage

Le programme suivant va :

- Créer le fichier "test29.med".
- Créer dans ce fichier un maillage non structuré.
- Créer dans ce maillage un joint.
- Ecrire dans le joint un tableau de correspondances sur les types en regard (MED_NOEUD,MED_NOEUD).
- Ecrire dans le joint un tableau de correspondances sur les types en regard (MED_NOEUD,MED_TRIA3).
- Fermer le fichier "test29.med".

Accès aux sources :

- Version C.
- Version FORTRAN.

### Exemple de lecture de tous les joints d'un maillage

Le programme suivant offre un exemple de lecture des joints d'un maillage. Ce programme va :

- Ouvrir le fichier MED dont le nom est passé en argument en mode MED_LECTURE.
- Accéder au premier maillage du fichier.
- Lire le nombre de joints dans ce maillage.
- Pour chaque joint :
  - Lire les informations sur le joint.
  - Lire tous les tableaux de correspondances composant le joint en déterminant de quel type d'elément en regard il s'agit.
- Fermer le fichier MED.

Accès aux sources :

- Version C.
- Version FORTRAN.

### Exemple d'ajout d'une numérotation globale dans un maillage

Le programme suivant va :

- Ouvrir le fichier passé en paramètre.
- Accéder au premier maillage du fichier.
- Ajouter sur ce maillage une numérotation globale sur les noeuds.
- Fermer le fichier passé en paramètre.

Accès aux sources :

- Version C.
- Version FORTRAN.

### Exemple de lecture d'une numérotation globale dans un maillage

Le programme suivant va :

- Ouvrir le fichier passé en paramètre.
- Accéder au premier maillage du fichier.
- Lire sur ce maillage une numérotation globale sur les noeuds.
- Fermer le fichier passé en paramètre...

Accès aux sources :

- Version C.
- Version FORTRAN.

# Conventions sur la définition des correspondances dans un joint

Un joint est une liste de correspondances 2 à 2 entre des entités (noeuds, mailles, faces, arêtes) d'un type semblable ou nom. Les correspondances entre entités sont stockées 2 à 2 en mémoire dans un joint : ainsi le tableau de correspondances suivant {1,2,3,4,5,6} appliqué à des entités en regard de type (MED_NOEUD,MED_TRIA3), signifie qu'on a les 3 correspondances suivantes :

- Entre le sommet 1 et le triangle numéro 2.
- Entre le sommet 3 et le triangle numéro 4.
- Entre le sommet 5 et le triangle numéro 6.