Documentation de la bibliothèque MED-fichier V2.3 : Guide d'utilisation - Module "MED_Joint".
|
Retour à la page de garde du guide utilisateur
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 raccordement conforme
- La jointure de deux maillages de pavage différent : raccordement non conforme
- 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
- des maillages affectés à chacun des sous-domaines,
- par la définition de « joints » - raccord entre les maillages de sous-domaines voisins,
- par une numérotation globale optionnelle des entités.
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 : # MED Fichier v 2.3
- 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.
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".
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.
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.
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.
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.
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..
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.
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.
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.
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 :
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 :
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 :
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 :
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.