##
Documentation de la biliothèque MED-fichier V2.2 : Guide d'utilisation - Module "MED_Fichier".

Sommaire de la page

- Introduction
- Modèles de programmation
  - Mode d'accès à un fichier
  - Créer, ouvrir, fermer un fichier
  - Ecrire, lire un en-tête de fichier
  - Tester la conformité d'un fichier
  - Monter, démonter un fichier
- Exemples de programmation
  - Exemples d'accès à un fichier
  - Exemple de test de la conformité d'un fichier
  - Exemple de montage et démontage de fichier

Retour à la page de garde du guide d'utilisation

# Introduction

Les routines disponibles permettent de :

- Créer un fichier MED.
- Ouvrir (en lecture ou en écriture) un fichier existant.
- Fermer un fichier.
- Accéder au numéro de version de la bibliothèque MED que l'on utilise.
- Lire dans un fichier le numéro de version de la bibliothèque MED qui a été utilisée pour le créer.
- Tester si le fichier que l'on veut lire a été créé avec la même version de bibliothèque MED que celle qu'on utilise pour le lire.
- Tester si le fichier que l'on veut lire est au format HDF V5.
- Monter dans le fichier MED courant le contenu d'un autre fichier MED.
- Démonter un fichier précédemment monté.
- Ecrire/lire un en-tête de fichier.

Le détail de ces routines est précisé dans la rubrique du guide de référence du module "MED_Fichier".

# Modèles de programmation

### Mode d'accès à un fichier

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

- MED_LECTURE : Ouverture en lecture seule. Il est alors impossible de modifier le contenu du fichier.
- MED_LECTURE_ECRITURE : Ouverture en lecture/écriture du fichier. Si une donnée existe déjà et qu'on la réécrit, elle est écrasée.
- MED_LECTURE_AJOUT : Ouverture en lecture/écriture du fichier. L'écriture n'est possible que pour ajouter de nouvelles données : si une donnée existe et qu'on tente de la réécrire dans le fichier, une erreur est générée.
- MED_CREATION : Création du fichier s'il n'existe pas, écrasement sinon.

Si on ouvre plusieurs fichiers MED en même temps, ces fichiers doivent être ouverts selon le même mode d'accès.

### Créer, ouvrir, fermer un fichier

La création d'un nouveau fichier ou l'ouverture d'un fichier existant se fait par l'intermédiaire de la routine MEDouvrir/efouvr. Le mode d'accès est spécifié par la valeur du paramètre acces. Cette routine renvoie un identificateur entier (ID) qui sera utilisé par les autres routines de l'API pour accéder aux données internes du fichier.

La routine MEDfermer/efferm permet de fermer le fichier dont l'identificateur (ID) lui est passé en paramètre.

### Ecrire, lire un en-tête de fichier

Lors de la création ou de l'ouverture d'un fichier selon un des différents modes d'écriture possibles, on peut écrire dans le fichier un en-tête qui comporte au plus MED_TAILLE_DESC (200) caractères. Cet en-tête est purement descriptif et est à la discrétion de l'utilisateur.

L'écriture d'un en-tête de fichier se fait par l'intermédiaire de la routine MEDfichDesEcr/effide. L'écriture d'un en-tête dans un fichier MED est optionnelle.

Pour lire un en-tête dans un fichier, on dispose de deux routines :

- La première MEDlFichDes/eflfde permet lire la taille exacte de l'en-tête.
- La seconde MEDfichEntete/effien permet de lire l'en-tête.

La lecture d'un en-tête d'un fichier MED est optionnelle.

### Tester la conformité d'un fichier

Avant d'ouvrir un fichier existant, il est possible de tester sa conformité avec le format MED-fichier V2.2 :

- La routine MEDformatConforme/effoco permet de vérifier si le fichier est au bon format HDF (HDF 5). Cela permet de détecter par exemple un fichier MED V1.0 au format HDF V4.
- La routine MEDversionConforme/efveco permet de vérifier si le fichier a été créé avec la bibliothèque MED-fichier V2.2. Avertissement : il y a pas de compatibilité entre un fichier MED V2.1 et un fichier V2.2. L'utilitaire "medimport" permet de convertir un fichier au format MED-fichier V2.1 dans un fichier au format V2.2.

De plus les deux fonctionnalités suivantes sont fournies par l'API :

- La routine MEDversionDonner/efvedo permet de récupérer les trois entiers composant le numéro de version de la bibliothèque MED-fichier utilisée, en l'occurence :
  - numéro majeur : 2.
  - numéro mineur : 2.
  - numéro de release : 1.
- La routine MEDversionLire/efveli permet de lire dans un fichier MED que l'on a ouvert au préalable, les entiers composant le numéro de version de la bibliothèque MED-fichier qui a été utilisée pour créer ce fichier. Par exemple, dans le cas d'un fichier créé avec MED-fichier V2.2.2, on obtient :
  - numéro majeur : 2.
  - numéro mineur : 2.
  - numéro de release : 1.

Ces 2 routines seront à terme utiles si doivent coexister différentes releases de MED-fichier V2.2. Elles permettront de voir si le fichier lu a été créé ou non avec la même release.

### Monter, démonter un fichier

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

- Les maillages peuvent être dans un premier fichier.
- Les champs de résultat peuvent être dans un second fichier.

Le mécanisme de montage de fichier fourni par l'API de MED-fichier 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 routine MEDmonter/efmont permet de créer un point de montage dans le fichier courant. Ce point de montage permet d'accéder de manière transparente soit aux maillages, soit aux champs de résultats d'un fichier distinct du fichier courant.
- La routine MEDdemonter/efdemo permet de desactiver un point de montage.

Remarques :

- Un point de montage masque temporairement les données du fichier courant. Exemple : si on monte dans le fichier courant les maillages d'un autre fichier, les propres maillages du fichier courant sont inaccessibles tant que le montage est actif.
- Pour un type de donnée (champ ou maillage), on ne peut avoir qu'un seul point de montage actif. Ce la signifie que dans un fichier on a au plus deux points de montages actifs : un sur les maillages, un sur les champs.
- Une fois le démontage effectué, les données précédemment montées ne sont plus accessibles et les données du fichier local qui étaient éventuellement masquées redeviennent visibles.

# Exemples de programmation

### Exemples d'accès à un fichier

Le programme suivant :

- Crée un fichier de nom "test1.med".
- Y dépose un en-tête.
- Ferme le fichier.
- Ouvre le fichier en mode MED_LECTURE.
- Ferme le fichier.

Accès aux sources :

- Version C.
- Version FORTRAN.

### Exemple de test de la conformité d'un fichier

Le programme suivant :

- Crée puis ferme un fichier de nom "test18.med".
- Récupère et affiche le numéro de version de la bibliothèque MED-fichier.
- Teste la conformité du fichier "test18.med" vis-à-vis du format HDF 5.
- Teste la conformité du fichier "test18.med" vis-à-vis de la version de MED-fichier utilisée.
- Ouvre le fichier "test18.med" en mode MED_LECTURE.
- Lit dans "test18.med" le numéro de version de MED-fichier qui a été utilisée pour créer ce fichier. En l'occurence, on récupère les entiers : 2,2 et 3.
- Ferme le fichier "test18.med".

Accès aux sources :

- En C.
- En FORTRAN.

### Exemple de montage et démontage de fichier

Le programme suivant :

- Ouvre en mode MED_LECTURE_AJOUT le fichier de nom "test2.med". Ce fichier existe déjà et contient des maillages.
- Monte dans "test2.med" les champs du fichier de nom "test10.med". Le fichier "test10.med" existe déjà.
- Consulte les champs désormais visibles dans "test2.med" suite au montage.
- Désactive le point de montage.
- Vérifie que les champs de ne sont plus visibles dans "test2.med".
- Ferme le fichier "test2.med".
- Crée un fichier "test20.med".
- Monte dans "test20.med" les champs du fichier "test10.med" et les maillages de "test2.med"
- Vérifie que les maillages et champs ainsi montés sont visibles dans "test20.med".
- Désactive les deux points de montage.
- Ferme le fichier "test20.med".

Accès aux sources :

- En C.
- En FORTRAN.