Documentation de la bibliothèque MED-fichier V2.2 : De la V2.1 à la V2.2


Sommaire de la rubrique

Introduction

Cette rubrique a pour objectif de faciliter le passage de MED-fichier V2.1 à MED-fichier V2.2, elle s'adresse en premier lieu aux développeurs qui veulent mettre à niveau leur interface avec la bibliothèque MED-fichier au sein d'un code.

Evolutions apportées au modèle de données

Extensions apportées au modèle

Eléments polygones et polyèdres

MED-fichier V2.2 donne la possibilité de définir des éléments qui correspondent à des polyèdres et des polygones quelconques.

Localisation des points de Gauss

Dans le cadre des échanges de champs de résultats exprimés sur les points de Gauss, MED-fichier V2.2 fournit la possibilité de localiser ces points sur des éléments de référence en des lieux différents selon la modélisation numérique choisie. Pour chaque type de modélisation, il est possible de spécifier cette localisation sur des éléments de référence.

On distingue différentes familles de points de Gauss en fonction du nombre de points d'intégration. Chaque point d'intégration est localisé au sein d'un élément de référence par ses coordonnées et se voit associer un poids.

La localisation des points de Gauss pour un élément de référence nécessite donc de connaître :

Pour plus de détails, on peut consulter le modèle de données.

Variables scalaire

Une variable scalaire numérique correspond à une variable entière ou réelle non directement liée au domaine de calcul et donc indépendante de la notion de maillage.

Les valeurs numériques stockées dans ce type de variable peuvent être associées à une étape de calcul identifiée par un pas de temps et/ou un numéro d'ordre.

Pour plus de détails, on peut consulter le modèle de données.

Evolutions apportées aux types de données pré-existants

Maillage

Dans MED-fichier 2.2, on distingue deux catégories de maillages :

  1. Les maillages structurés (grille cartésienne, polaire et standard). Un maillage structuré est uniquement défini par ses noeuds. La connectivité entre les noeuds est de type (i,j,k) en 3D, (i,j) en 2D et (i) en 1D. Pour un axe donné (i, j ou k), on doit fournir un nombre de points qui permet spécifier un découpage régulier de l'axe. Les conventions d'indexation, de numérotation des noeuds ainsi que le mode de définition des coordonnées d'une grille sont définies dans le modèle de données.
  2. Les maillages non structurés. Il s'agit des maillages déjà définis dans MED-fichier V2.1.

De plus des informations supplémentaires sont associées aux maillages par rapport à MED-fichier V2.1 :

Pour plus de détails, on peut consulter le modèle de données.

Champ de résultat

Les évolutions sur les champs portent sur :

  1. La possibilité pour une même séquence de calcul (pas de temps/numéro d'ordre) de définir des valeurs portant sur plusieurs maillages.
  2. L'accès à la localisation des points de Gauss sur des éléments de référence.

La modélisation des champs est définie dans les packages du modèle de données :

Définition de la taille des noms et des unités

La taille des noms et unités passe de 8 à 16 caractères. Les noms et unités apparaissent dans les :

Evolutions apportées à l'API de la bibliothèque

Nouvelles fonctionnalités

Montage/démontage de fichier

Les données d'une étude peuvent être réparties dans des fichiers différents :

Le mécanisme de montage de fichier fourni par l'API de MED-fichier V2.2 permet de monter dans un fichier MED (que l'on a au préalable ouvert) les données contenues dans un autre fichier. Le montage est sélectif : on monte soit les maillages, soit les champs.

Le mécanisme de montage dépend de 2 routines :

La description de ces routines est disponible dans le guide de référence. Le mode d'utilisation de ces routines est fourni par le guide d'utilisation.

Ecriture et lecture des coordonnées des noeuds d'un maillage structuré

Les conventions d'indexation, de numérotation des noeuds ainsi que le mode de définition des coordonnées d'une grille sont définis dans le modèle de données.
Coordonnées des noeuds d'un maillage structuré (MED_STRUCTURE) standard (MED_GRILLE_STANDARD)

La description de ces routines est disponible dans le guide de référence. Le mode d'utilisation de ces routines est fourni par le guide d'utilisation.

Coordonnées des noeuds d'un maillage structuré (MED_STRUCTURE) cartésien (MED_GRILLE_CARTESIENNE) ou polaire (MED_GRILLE_POLAIRE)

La description de ces routines est disponible dans le guide de référence. Le mode d'utilisation de ces routines est fourni par le guide d'utilisation.

Ecriture et lecture de la connectivité des éléments polyèdres et polygones

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

De la même manière, 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) :

La description de ces routines est disponible dans le guide de référence. Le mode d'utilisation de ces routines est fourni par le guide d'utilisation.

Ecriture et lecture des variables scalaire

L'API de MED-fichier V2.2 propose des routines pour écrire/lire des variables scalaires entières ou flottantes, associées ou non à des pas de temps et/ou des numéros d'ordre :

La description de ces routines est disponible dans le guide de référence. Le mode d'utilisation de ces routines est fourni par le guide d'utilisation.

Ecriture et lecture des éléments de référence aux points de Gauss

La bibliothèque MED-fichier V2.2 permet d'écrire/lire des éléments de référence de localisation des points de Gauss :

La description de ces routines est disponible dans le guide de référence. Le mode d'utilisation de ces routines est fourni par le guide d'utilisation.

Ecriture et lecture des liens sur fichier distant

La bibliothèque MED-fichier V2.2 permet de écrire/lire des liens sur fichiers distants. Les valeurs définies dans un champ de résultat peuvent porter sur les entités d'un maillage qui n'est pas défini dans le même fichier que celui où se trouve le champ. Un lien sur fichier distant permet d'indiquer dans le fichier courant, le nom et le chemin d'accès du fichier distant dans lequel se trouve le maillage :

Remarques :

La description de ces routines est disponible dans le guide de référence. Le mode d'utilisation de ces routines est fourni par le guide d'utilisation.

Refonte de l'existant

Simplification des droits d'accès aux données

Rappel du mode en vigueur dans MED-fichier V2.1

Dans MED-fichier V2.1, le mode d'accès à un fichier MED ou le mode d'écriture d'une structure de données MED pouvait prendre les valeurs :

Quand on ouvrait un fichier MED V2.1 en mode MED_ECRI ou MED_REMP, il était possible lors de l'écriture de données spécifiques (coordonnées, connectivité, valeurs d'un champ,...) de choisir un mode d'écriture propre à ces données. Ce mode était spécifié par un paramètre mode qui pouvait prendre les valeurs MED_ECRI ou MED_REMP et apparaissait dans les routines :

Nouveau mode en vigueur dans MED-fichier V2.2

Dans MED-fichier V2.2, la définition du mode d'accès à un fichier se fait lors de l'ouverture de ce dernier avec la routine MEDouvrir/efouvr. Les différents modes d'accès possibles sont :

Le mode d'ouverture du fichier décide seul du mode d'accès aux données du fichier. Le paramètre mode disparaît donc dans MED-fichier V2.2 au sein des routines :

Accès aux différents types de maillage

Rappel du mode en vigueur dans MED-fichier V2.1

Dans MED-fichier V2.1.5, il n'existe qu'un seul type de maillage, celui des maillages non structurés :

Nouveau mode en vigueur dans MED-fichier V2.2

On distingue désormais les différentes catégories possibles de maillages :

Simplification de la définition de la connectivité des mailles

Rappel du mode en vigueur dans MED-fichier V2.1

Avec MED-fichier V2.1, il fallait appliquer la convention suivante pour la définition du tableau de connectivité des éléments d'un maillage non structuré qui était passé en paramètres aux routines MEDconnEcr/efcone, MEDconnLire/efconl, MEDelementsEcr/efelee et MEDelementsLire/efelel :

Nouveau mode en vigueur dans MED-fichier V2.2

Par rapport à MED-fichier V2.1, la définition du tableau de connectivité a été simplifiée : il n'est plus nécessaire pour les mailles dont la dimension est inférieure à celle du maillage de définir l'entier supplémentaire qui permettait d'indiquer une coïncidence avec une face (ou une arête) d'une maille de dimension supérieure. Cette convention a été supprimée.

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

Simplification des conventions sur les noms des familles de noeuds et d'éléments

Rappel du mode en vigueur dans MED-fichier V2.1

Avec MED-fichier V2.1, les familles étaient identifiées par un nom qui devait être unique pour un maillage donné.

Nouveau mode en vigueur dans MED-fichier V2.2

Désormais avec MED-fichier V2.2, une famille de noeuds peut porter le même nom qu'une famille d'éléments.

Informations supplémentaires

Les conventions sur la définition des familles d'un maillage MED V2.2 sont les suivantes :

Clarification de l'API sur les familles

Rappel du mode en vigueur dans MED-fichier V2.1

Avec MED-fichier V2.1, la routine MEDnFam/efnfam permettait de lire dans un maillage selon la valeur du dernier paramètre :

Nouveau mode en vigueur dans MED-fichier V2.2

La routine MEDnFam/efnfam a été éclatée en 3 routines différentes :

Nouveau mode d'accès aux valeurs des champs

Rappel du mode en vigueur dans MED-fichier V2.1

Avec MED-fichier V2.1, le mode d'accès aux champs de résultat est le suivant :

Nouveau mode en vigueur dans MED-fichier V2.2

Trois évolutions importantes sont fournies par MED-fichier V2.2 :

  1. Pour un même type d'entité et pour une même séquence de calcul, il est possible d'écrire des valeurs portant sur les entités de plusieurs maillages.
  2. A une séquence de calcul donnée, un type d'entité donné et pour un maillage donné, on peut référencer un élément de référence fournissant la localisation des points de Gauss.
  3. Un maillage référencé dans une séquence de calcul peut être stocké dans un autre fichier que celui du champ. Pour indiquer que ce fichier est distant, il faut définir un lien vers un fichier distant.

Le nouveau mode d'accès aux champs de résultats est donc désormais le suivant :

Evolutions apportées aux utilitaires

Utilitaire MDUMP

L'utilitaire mdump prend compte l'ensemble des évolutions du modèle et fonctionnelles pré-citées. Vous pouvez consulter les sources C de cet utilitaire capable de lire et d'afficher à l'écran l'intégralité du contenu de n'importe quel fichier au format MED V2.2.

Utilitaire MEDCONFORME

L'utilitaire medconforme permet de vérifier la conformité d'un fichier MED vis-à-vis de la bibliothèque MED-fichier V2.2.

Pour un fichier donné, l'utilitaire medconforme :

Utilitaire MEDIMPORT

Le nouvel utilitaire medimport qui est livré avec la bibliothèque permet de convertir un fichier au format MED V2.1 dans un fichier au format MED V2.2.

Exemple d'utilisation :

medimport foo.med 

Pour un fichier MED V2.1 "foo.med", l'utilitaire va créer un fichier "foo.med2.2" qui sera le résultat de la conversion de "foo.med" au format MED V2.2.

Sont convertis :

Exemple de traces d'exécution :

Mettre à jour une interface MED-fichier V2.1

Droits d'accès aux données

Il faut tout d'abord mettre à jour le mode d'accès aux données. Pour cela, il faut :

  1. Préciser les mode d'ouverture du fichier dans la routine MEDouvrir/efouvr selon le mode d'accès souhaité. Nous rappelons que les différents modes d'accès possibles sont :
  2. Retirer le paramètre mode des appels aux routines suivantes :

Taille des noms et des unités

La taille des noms et unités passant de 8 à 16 caractères, il faut prendre en compte cette évolution à l'écriture et à la lecture :

  1. Des coordonnées des noeuds d'un maillage : Les routines impactées sont alors MEDcoordEcr/efcooe, MEDcoordLire/efcool, MEDnoeudsEcr/efnoee et MEDnoeudsLire/efnoel.
  2. Des composantes d'un champ : Les routines impactées sont alors MEDchampCr/efchac et MEDchampInfo/efchai.
  3. Des noms des entités : Les routines impactées sont alors MEDnomEcr/efnome, MEDnomLire/efnoml, MEDnoeudsEcr/efnoee,MEDnoeudsLire/efnoel, MEDelementsEcr/efele,MEDelementsLire/efell.

Accès aux différents types de maillage

On doit désormais distinguer les maillages structurés (MED_STRUCTURE) des maillages non structurés (MED_NON_STRUCTURE).

On a 2 possibilités :

  1. Prendre en compte ces deux types de maillages : SCENARIO 1.
  2. Continuer à ne pas prendre en compte que les maillages non structurés : SCENARIO 2.

Remarques :

Accès aux maillages structurés

Cette section n'est à prendre en compte que si vous avez choisi le scénario 1.

Un maillage structuré (MED_STRUCTURE) est uniquement défini par ses noeuds. La définition de la connectivité des éléments est implicite. L'ensemble 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.

Pour un grille de type MED_GRILLE_STANDARD, on doit pouvoir écrire/lire dans un fichier MED :

Pour une grille de type MED_GRILLE_CARTESIENNE ou MED_GRILLE_POLAIRE, on doit pouvoir écrire/lire dans un fichier MED :

Remarques : Au même titre que pour les maillages MED_NON_STRUCTURE,

Accès à la connectivité des éléments

La définition du tableau de connectivité a été simplifiée : il n'est plus nécessaire pour les mailles dont la dimension est inférieure à celle du maillage de définir l'entier supplémentaire qui permettait d'indiquer une coïncidence avec une face (ou une arête) d'une maille de dimension supérieure. Cette convention a été supprimée.

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

Accès à la connectivité des polyèdres et des polygones

On a 2 possibilités :

  1. Prendre en compte les polyèdres et les polygones quelconques : SCENARIO 3.
  2. Continuer à ne pas prendre en compte que les éléments géométriques pré-définis : SCENARIO 4.

Remarques :

Accès aux familles d'entités

A la lecture des familles d'un maillage, il faut mettre à jour les appels à la routine MEDnFam/efnfam qui a été éclatée en 3 routines différentes :

Accès aux champs de résultat

Il s'agit de prendre en compte les trois évolutions importantes fournies par MED-fichier V2.2 :

  1. Pour un même type d'entité et pour une même séquence de calcul, il est possible d'écrire des valeurs portant sur les entités de plusieurs maillages.
  2. A une séquence de calcul donnée, un type d'entité donné et pour un maillage donné, on peut référencer un élément de référence fournissant la localisation des points de Gauss (voir la suite du document).
  3. Un maillage référencé dans une séquence de calcul peut être stocké dans un autre fichier que celui du champ. Pour indiquer que ce fichier est distant, il faut définir un lien vers un fichier distant (voir la suite du document).

Le nouveau mode d'accès aux champs de résultats est donc désormais le suivant :

Prise en compte des liens sur fichier distant

On a 2 possibilités :

  1. Prendre en compte les liens sur fichier distant : SCENARIO 5.
  2. Ne pas prendre en compte les liens sur fichier distant : SCENARIO 6.

Prise en compte de la localisation des points de Gauss

La prise en compte de la localisation des points de Gauss est obligatoire si vous devez échanger des champs de résultats dont les valeurs peuvent porter sur les points de Gauss des éléments.

Vous devez donc prendre en compte les routines fournies par l'API de MED-fichier V2.2 :

Prise en compte des variables scalaire

On a 2 possibilités :

Dans cette seconde optique, vous devez prendre en compte les routines sur les variables scalaires fournies par MED-fichier V2.2 :