Documentation de la bibliothèque MED-fichier V2.2 : Types élémentaires et paramètres de base de l'interface C
|
Retour à la page de garde du guide de référence
Tout ce qui suit est disponible dans le fichier "med.h".
Tous les types énumérés qui sont décrits sont utiles à la définition des
paramètres des routines de l'API.
- med_idt : type de l'identificateur d'un fichier MED après ouverture.
- med_err : type du code de retour des routines de l'API, 0 si réussite, -1 sinon.
- med_int : type entier de référence utilisé pour stocker les données entières stockées dans les fichiers MED.
La taille de cet entier correspond à celle des entiers natifs FORTRAN propre à chaque plate-forme.
- med_float : type des flottants stockés dans les fichiers MED (IEEE 64 BITS).
Les types med_int et med_float correspondent aux
types numériques de base du modèle de données.
Ces constantes spécifient la taille des chaînes de caractères
utilisées par l'API. Elles permettent de définir les
chaînes de caractères spécifiées dans les types de base du modèle de données.
La taille des chaînes de caractères est standardisée en fonction de l'information représentée.
#define MED_TAILLE_DESC 200
#define MED_TAILLE_NOM 32
#define MED_TAILLE_LNOM 80
#define MED_TAILLE_PNOM 16
typedef enum {MED_LECTURE, MED_LECTURE_ECRITURE, MED_LECTURE_AJOUT, MED_CREATION} med_mode_acces;
Ce type définit le mode d'accès aux données d'un fichier MED qui est spécifié lorsque l'on ouvre le fichier via
la routine MEDouvrir :
- 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.
Le mode d'accès du fichier est stocké dans la variable globale MED_MODE_ACCES
typedef enum {MED_FULL_INTERLACE,MED_NO_INTERLACE} med_mode_switch;
Ce type définit le mode de stockage des données en mémoire. On trouve deux
modes possibles :
- MED_FULL_INTERLACE : Mode entrelacé.
- MED_NO_INTERLACE : Mode non entrelacé.
Exemple d'utilisation :
Stockage des coordonnées dans un tableau en mémoire dans un repère cartésien à 3 dimensions.
- En mode entrelacé : X1, Y1, Z1, X2, Y2, Z2, .... , Xn, Yn, Zn.
- En mode non entrelacé : X1, X2, ..., Xn, Y1, Y2, ..., Yn, Z1, Z2, ..., Zn
Conventions utilisées :
- Dans un fichier MED, les données sont stockées en mode non entrelacé (MED_NO_INTERLACE).
La conversion éventuelle vers ou à partir de la mémoire en mode entrelacé
est réalisée automatiquement par les routines de l'API.
- Chaque code est libre de gérer ses données en mémoire selon l'un des deux modes.
typedef enum {MED_NON_STRUCTURE, MED_STRUCTURE} med_maillage;
Ce type permet de typer un maillage selon les 2 catégories possibles :
- MED_NON_STRUCTURE : Permet de définir un maillage non structuré.
- MED_STRUCTURE : Permet de définir un maillage structuré.
Ce type correspond au type med_maillage défini dans le package
"Maillage" du modèle de données.
typedef enum {MED_GRILLE_CARTESIENNE, MED_GRILLE_POLAIRE, MED_GRILLE_STANDARD} med_type_grille;
Ce type permet de typer une grille (maillage structuré) :
- MED_GRILLE_CARTESIENNE : Permet de définir une grille cartésienne.
- MED_GRILLE_POLAIRE : Permet de définir une grille polaire.
- MED_GRILLE_STANDARD : Permet de définir une grille standard.
Ce type correspond au type med_type_grille défini dans le package
"Maillage" du modèle de données.
typedef enum {MED_MAILLE, MED_FACE, MED_ARETE, MED_NOEUD} med_entite_maillage;
Ce type définit les différents types d'entités qui composent un maillage.
- MED_MAILLE : maille.
- MED_FACE : face (connectivité descendante).
- MED_ARETE : arête (connectivité descendante).
- MED_NOEUD : noeud.
typedef enum {MED_POINT1=1, MED_SEG2=102, MED_SEG3=103, MED_TRIA3=203,
MED_QUAD4=204, MED_TRIA6=206,MED_QUAD8=208, MED_TETRA4=304,
MED_PYRA5=305, MED_PENTA6=306, MED_HEXA8=308, MED_TETRA10=310,
MED_PYRA13=313, MED_PENTA15=315, MED_HEXA20=320, MED_POLYGONE=400,
MED_POLYEDRE=500,MED_NONE=0} med_geometrie_element;
Ce type définit les différents types géométriques des éléments d'un maillage
(mailles/faces/arêtes) :
- MED_POINT1 : point à 1 noeud.
- MED_SEG2 : segment à 2 noeuds.
- MED_SEG3 : segment à 3 noeuds.
- MED_TRIA3 : triangle à 3 noeuds.
- MED_TRIA6 : triangle à 6 noeuds.
- MED_QUAD4 : quadrangle à 4 noeuds.
- MED_QUAD8 : quadrangle à 8 noeuds.
- MED_TETRA4 : tétraèdre à 4 noeuds.
- MED_TETRA10 : tétraèdre à 10 noeuds.
- MED_HEXA8 : hexaèdre à 8 noeuds.
- MED_HEXA20 : hexaèdre à 20 noeuds.
- MED_PENTA6 : pentaèdre à 6 noeuds.
- MED_PENTA15 : pentaèdre à 15 noeuds.
- MED_PYRA5 : pyramide à 5 noeuds.
- MED_PYRA13 : pyramide à 13 noeuds.
- MED_POLYGONE : polygone quelconque.
- MED_POLYEDRE : polyèdre quelconque.
- NONE : vide.
Remarques :
- Correspondent
- Aux mailles : tous les types géométriques possibles.
- Aux faces : les entités de dimension 2 : MED_TRIA3, MED_TRIA6, MED_QUAD4, MED_QUAD8, MED_POLYGONE.
- Aux arêtes : les entités de dimension 1 : MED_SEG2, MED_SEG3.
-
Constantes littérales associées :
#define MED_NBR_GEOMETRIE_MAILLE 15
#define MED_NBR_GEOMETRIE_FACE 4
#define MED_NBR_GEOMETRIE_ARETE 2
Ces constantes correspondent au nombre de types de mailles/faces/arêtes dont la géométrie
est pré-définie (les types MED_POLYGONE et MED_POLYEDRE ne sont donc pas comptés).
-
A noter que des valeurs entières sont associées à chaque type géométrique : pour chacune, le premier chiffre indique la dimension de l'entité,
son modulo 100 son nombre de noeuds.
Ces conventions ne s'appliquent pas aux types MED_POLYGONE et MED_POLYEDRE.
typedef enum {MED_COOR, MED_CONN, MED_NOM, MED_NUM, MED_FAM,MED_COOR_IND1,
MED_COORD_IND2, MED_COORD_IND3} med_table;
Ce type permet d'accéder à un type d'attribut interne
des entités d'un maillage.
- MED_COOR : coordonnées des noeuds.
- MED_CONN : connectivité des mailles/faces/arêtes.
- MED_NOM : noms des noeuds/mailles/faces/arêtes.
- MED_NUM : numéros des noeuds/mailles/faces/arêtes.
- MED_FAM : familles des noeuds/mailles/faces/arêtes.
- MED_COORD_IND1 : coordonnées des indices de l'axe 1 d'une grille.
- MED_COORD_IND2 : coordonnées des indices de l'axe 2 d'une grille.
- MED_COORD_IND3 : coordonnées des indices de l'axe 3 d'une grille.
typedef enum {MED_NOD, MED_DESC} med_connectivite ;
Il existe deux modes de connectivité pour décrire la connectivité des mailles d'un maillage :
- MED_NOD : connectivité nodale.
- MED_DESC : connectivité descendante.
Remarques :
- Dans le cadre de la connectivité nodale, les mailles sont décrites par la liste des noeuds qui les composent. Pour la connectivité descendante, les mailles sont décrites par les faces, les faces par les arêtes, les arêtes par les noeuds.
-
Il n'y a pas de conversion automatique entre les 2 modes de représentation. Si les mailles sont stockées dans un fichier
en mode nodal, un code ne pourra pas les lire en mode descendant.
typedef enum {MED_CART, MED_CYL, MED_SPHER} med_repere;
Ce type définit le type du repère des coordonnées des noeuds dans un maillage
non structuré :
- MED_CART : cartésien.
- MED_CYL : cylindrique.
- MED_SPHER : sphérique.
typedef enum {MED_FLOAT64=6,MED_INT32=24,MED_INT64=26} med_type_champ;
Il s'agit du type des valeurs des composantes d'un champ.
- MED_FLOAT64 : flottant 64 bits IEEE.
- MED_INT32 : entier 32 bits.
- MED_INT64 : entier 64 bits.
/* 16 caracteres : 1234567890123456*/
#define MED_PNOM_BLANC " "
/* 32 caractères : 12345678901234567890123456789012*/
#define MED_NOM_BLANC " "
#define MED_NOPG 1 /* Variable Interne */
#define MED_NOGAUSS "" /* -> pas de point de Gauss */
#define MED_NOGAUSSi MED_NOM_BLANC /* Variable Interne */
#define MED_NOPFL "" /* -> pas de profils utilisateur */
#define MED_NOPFLi MED_NOM_BLANC /* Variable Interne */
#define MED_NOLIEN ""
#define MED_NOLIENi MED_NOM_BLANC /* Variable Interne */
#define MED_NOPF 0 /* -> pas de profils pour _MEDdataseNnumEcrire */
#define MED_NOPDT -1 /* rem: pas de pas de temps negatifs */
#define MED_NONOR -1 /* rem: pas de n°ordre negatif */
#define MED_DIM1 1 /* PAS */
#define MED_ALL 0
#define MED_NOREF ""
#define MED_DEFAUT "" /* Toutes les donnees champs ou maillage pour le montage */
Ces constantes sont utilisées dans le paramétrage des routines de l'API sur les
champs de résultat (module fonctionnel "MED_Champ").
typedef enum {MED_NO_PFLMOD,
MED_GLOBAL,
MED_COMPACT } med_mode_profil;
Ce type permet de spécifier le mode de répartition des valeurs
d'un champ définies sur un profil de champ :
- MED_COMPACT :
- Seules les valeurs relatives au profil sont
en mémoire.
- Les points de Gauss apparaissent normalement
en mémoire.
- Le mode d'entrelacement mémoire est pris en compte.
- MED_GLOBAL (en test) :
- La totalité des
valeurs du champ sont en mémoire. La librairie MED-fichier s'occupe de
sélectionner les valeurs en fonction des numéros
indiqués à l'écriture du profil.
- Les points de Gauss apparaissent normalement en mémoire.
- Le mode d'entrelacement mémoire est pris en compte.
- MED_NOPFLMOD : aucun mode à gérer (pas de profil).
typedef enum {MED_MAILLAGE, MED_CHAMP} med_type_donnee;
Ce type permet de spécifier le type des données stockées dans un
fichier différent du fichier courant et que l'on veut monter dans
le fichier courant :
- MED_MAILLAGE : accès au(x) maillage(s) du fichier que l'on veut monter.
- MED_CHAMP : accès au(x) champ(s) du fichier que l'on veut monter.
typedef enum {MED_FAUX, MED_VRAI} med_booleen ;