## Documentation de la bibliothèque MED-fichier V2.2 : Tutorial

Sommaire de la rubrique
Introduction Intégrer MED-fichier dans un code de calcul C ou FORTRAN Mettre à jour une interface MED-fichier V2.1 Développer une interface MED-fichier V2.2

# Introduction

Cette rubrique constitue un tutorial de la bibliothèque MED-fichier, elle a pour objectif de guider un utilisateur dans la réalisation d'une interface MED-fichier dans un code de calcul C ou FORTRAN.

Il s'agit d'un premier jet qui sera complété prochainement par des exemples concrets de définition de maillages et de champs de résultats au format MED V2.2.

# Intégrer MED-fichier dans un code de calcul C ou FORTRAN

Pour intégrer la bibliothèque MED-fichier V2.2 dans un code de calcul C ou FORTRAN, il faut :

- Vérifier si le modèle de données MED V2.2 est compatible avec les données que vous voulez échanger. Pour cela, vous devez consulter la description complète du modèle de données associé à la V2.2.
- Développer dans le code une interface avec la bibliothèque MED-fichier V2.2 qui permette de lire et d'écrire des fichiers au format MED V2.2.
- Valider votre interface en réalisant :
  1. Un chaînage interne : vous devez pouvoir lire les fichiers MED V2.2 que vous avez créés.
  2. Un ou plusieurs chaînages avec un ou plusieurs autres codes disposant déjà d'une interface MED V2.2 validée. Il s'agit de pouvoir lire les fichiers MED fournis par ce(s) code(s) et de s'assurer que ce(s) code(s) puisse(nt) lire vos fichiers.

Intégrer la bibliothèque MED-fichier dans un code de calcul revient à définir une architecture comprenant 3 couches fonctionnelles différentes :

1. La couche basse fournit les fonctions d'accès au support d'échange (fichier sur disque). Cette couche constitue un module réutilisable et externe au code de calcul. De plus elle est totalement indépendante du modèle de données commun : elle offre uniquement un service d'accès à des structures de données générales (tableaux, listes, matrices, ...). Dans le cadre de MED, étant donnés les volumes de donnés ciblés (maillages à plusieurs millions de noeuds), c'est le format de fichier binaire HDF V5 qui a été choisi.
2. La couche intermédiaire définit le mode de représentation et d'accès aux données du modèle commun et utilise les services de la couche basse. Cette couche constitue également un module réutilisable et externe au code de calcul. La bibliothèque informatique MED-fichier constitue ce module.
3. La couche haute gère l'import/export des données du modèle commun à partir ou vers les structures de données propres à chaque code de calcul. La couche haute utilise les services de la couche intermédiaire. Cette interface avec la bibliothèque MED permet à un code de calcul de lire/écrire dans un fichier au format HDF les données du modèle commun. C'est cette couche haute que vous devez développer dans votre code de calcul.

# Mettre à jour une interface MED-fichier V2.1

Pour mettre à jour une interface MED-fichier V2.1 et intégrer les évolutions fournies par la V2.2, vous pouvez directement passer à la rubrique "De la V2.1 à la V2.2".

# Développer une interface MED-fichier V2.2

Pour développer une interface MED-fichier V2.2 en partant de zéro, vous devez vous appuyer sur :

1. Le guide d'utilisation qui fournit des modèles de programmation des routines de l'API de la bibliothèque MED-fichier V2.2.
2. Le guide de référence qui fournit la description de chacune des routines de l'API de la bibliothèque MED-fichier V2.2.

Une interface MED-fichier V2.2 complète doit permettre de lire et d'écrire tout type de fichier MED. Pour accéder en lecture ou en écriture à un fichier MED, il faut ouvrir le fichier selon un des modes d'accès fournis par la bibliothèque. Les différentes fonctionnalités disponibles autour de la gestion des fichiers MED V2.2 sont décrites dans le module "MED_Fichier" du guide d'utilisation.

Un fichier MED V2.2 standard contient :

- Un ou plusieurs maillages :
  - Un maillage MED peut être non structuré ou structuré. Le mode d'accès aux différents types de maillages disponibles est décrit dans le module "MED_Maillage" du guide d'utilisation.
  - Un maillage contient :
    - Des entités géométriques : le mode d'accès aux différents types d'entités selon la nature du maillage est défini dans le module "MED_Entite" du guide d'utilisation.
    - Une ou plusieurs familles : le mode d'accès aux familles est défini dans le module "MED_Famille" du guide d'utilisation.
    - De zéro à plusieurs équivalences : le mode d'accès aux équivalences est défini dans le module "MED_Equivalence" du guide d'utilisation.
- Un ou plusieurs champs de résultat : le mode d'accès aux champs de résultats est défini dans le module "MED_Champ" du guide d'utilisation.
- Zéro ou plusieurs profils : le mode d'accès aux profils est défini dans le module "MED_Profil" du guide d'utilisation.
- Zéro ou plusieurs élements de référence aux points de Gauss : le mode d'accès aux éléments de référence aux points de Gauss est défini dans le module "MED_Point_De_Gauss" du guide d'utilisation.
- Zéro ou plusieurs variables scalaires numériques : le mode d'accès aux variables scalaires est défini dans le module "MED_Variable_Scalaire" du guide d'utilisation.

La prise en compte de certaines données est cependant optionnelle. Vous pouvez ne pas prendre en compte les :

- Variables scalaires numériques :
  - A l'écriture : aucun problème, les fichiers MED que vous serez amenés à créer ne contiendront aucune variable scalaire.
  - A la lecture : si vous êtes amenés à lire un fichier MED contenant des variables scalaires, vous n'aurez pas accès à ces données.
- Maillages structurés :
  - A l'écriture : aucun problème, les fichiers MED que vous serez amenés à créer ne contiendront aucun maillage de ce type.
  - A la lecture : si vous êtes amenés à lire un fichier MED contenant des maillages structurés, vous n'aurez pas accès à ces données. Il est recommandé si vous trouvez un tel maillage de renvoyer alors une erreur ou un avertissement à l'utilisateur.
- Eléments polyèdres et polygones quelconques dans un maillage non structuré :
  - A l'écriture : aucun problème, les maillages structurés que vous serez amenés à créer ne contiendront aucun élément de ce type.
  - A la lecture : si vous êtes amenés à lire un maillage non structuré contenant des polyèdres ou des polygones quelconques, vous devez renvoyer une erreur car vous ne serez pas alors capable de lire toute la description géométrique du maillage.