Documentation de la bibliothèque MED-fichier V2.2 : De la V2.1 à la V2.2
|
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.
MED-fichier V2.2 donne la possibilité de définir des éléments qui correspondent
à des polyèdres et des polygones quelconques.
- Un polyèdre peut constituer une maille 3D.
- Un polygone peut constituer :
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 :
- Le type géométrique de l'élément : triangle à 3 noeuds, triangle à 6 noeuds, ...
- Les coordonnées des noeuds de l'élement.
- Les coordonnées et le poids de chaque point de Gauss.
Pour plus de détails,
on peut consulter le modèle de données.
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.
Dans MED-fichier 2.2, on distingue deux catégories de maillages :
- 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.
- 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 :
- Une description. Il s'agit d'une simple chaîne de caractères qui permet à l'utilisateur
de décrire son maillage.
- La distinction possible entre la dimension du maillage et celle de l'espace de calcul.
On peut avoir un maillage 2D dans un espace 3D.
Pour plus de détails,
on peut consulter le modèle de données.
Les évolutions sur les champs portent sur :
- 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.
- 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 :
La taille des noms et unités passe de 8 à 16 caractères. Les noms et unités apparaissent dans les :
- Composantes d'un champ qui sont définies dans le package Résultat.
- Noms et coordonnées des noeuds d'un maillage qui sont définies dans le package Noeud.
- Noms des éléments d'un maillage : packages maille, face
et arête.
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 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 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.
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.
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)
- A l'écriture, on distingue 2 routines :
- La routine MEDstructureCoordEcr/efscoe permet de définir la structure
des coordonnées d'une grille de type MED_GRILLE_STANDARD.
Cette structure est définie par un tableau d'entiers mono dimensionnel
dont la taille est celle de la dimension du maillage.
Chaque élément contient le nombre d'indices par dimension (axe) de la grille.
Par exemple, la structure pour définir une grille 5x3 correspondra à un
tableau entier à 2 éléments : int structure[2] = {5,3}.
- La routine MEDcoordEcr/efcooe permet ensuite d'écrire les coordonnées des noeuds
du maillage.
- A la lecture, on doit utiliser 3 routines :
- La routine MEDnEntMaa/efnema permet de
lire le nombre de noeuds dans
un maillage structuré (MED_STRUCTURE) correspondant à une grille de type MED_GRILLE_STANDARD.
- La routine MEDstructureCoordLire/efscol permet de lire la structure
des coordonnées d'une grille de type MED_GRILLE_STANDARD.
Cette structure est définie par un tableau d'entiers mono dimensionnel
dont la taille est celle de la dimension du maillage.
- La routine MEDcoordLire/efcool permet ensuite de lire les coordonnées des noeuds
du maillage.
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)
- L'écriture des coordonnées d'un maillage structuré correspondant à une grille
MED_GRILLE_CARTESIENNE ou MED_GRILLE_POLAIRE ne nécessite que l'écriture
des indices de coordonnées selon chacun des axes de la grille.
La routine MEDindicesCoordEcr/eficoe permet l'écriture des indices d'un axe donné.
Il faut appeler cette routine pour chacun des axes de la grille.
- La lecture se fait axe d'indices de coordonnées par axe d'indices de coordonnées.
Pour un axe donné, il s'agit de :
- Lire le nombre d'indice sur l'axe. La routine MEDnEntMaa/efnema
permet de lire cette information.
- Allouer la mémoire nécessaire au stockage des indices.
- Lire les indices de coordonées de l'axe. La routine MEDindicesCoordLire/eficol
pemet de réaliser cette opération.
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.
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) :
- L'écriture de la connectivité des mailles de type MED_POLYEDRE est réalisée
par la routine MEDpolyedreConnEcr/efpece.
-
Pour récupérer le nombre de polyèdres, il faut utiliser la routine MEDnEntMaa/efnema.
La lecture de la connectivité des mailles de type MED_POLYEDRE est réalisée
par 2 routines :
- La routine MEDpolyedreInfo/efpyei permet de lire
la taille des tableaux qu'il faudra passer en paramètre à la routine
MEDpolyedreConnLire/efpecl.
- La routine MEDpolyedreConnLire/efpecl va lire dans le
maillage la connectivité des mailles polyèdres.
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) :
- L'écriture de la connectivité des mailles/faces de type MED_POLYGONE est réalisée
par la routine MEDpolygoneConnEcr/efpgce.
- Pour récupérer le nombre de polygones, il faut utiliser la routine MEDnEntMaa/efnema.
La lecture de la connectivité des mailles/faces de type MED_POLYGONE est réalisée
par 2 routines :
- La routine MEDpolygoneInfo/efpygi permet de lire
la taille des tableaux qu'il faudra passer en paramètre à la routine
MEDpolygoneConnLire/efpgcl.
- La routine MEDpolygoneConnLire/efpgcl va lire dans le
maillage la connectivité des mailles/faces polygones.
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.
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 :
- A l'écriture :
- La routine MEDscalaireCr/efscac permet de créer
une variable scalaire dans un fichier.
-
La routine MEDscalaireEntierEcr/efscee permet
d'écrire une valeur dans une variable scalaire de type entier.
-
La routine MEDscalaireFlottantEcr/efscfe permet
d'écrire une valeur dans une variable scalaire de type réel.
- A la lecture :
- La routine MEDnScalaire/efnsca permet de lire le nombre
de variables scalaire dans un fichier.
- La routine MEDscalaireInfo/efscai permet de lire les informations
sur une variable scalaire.
- La routine MEDnScalairePasdeTemps/efnspd permet de lire
le nombre de pas de temps dans une variable scalaire.
- La routine MEDscalairePasdetempsInfo/efspdi permet de lire les informations
sur un pas de temps. Il s'agit en fait d'un couple (pas de temps, numéro d'ordre).
-
La routine MEDscalaireEntierLire/efscel permet
de lire une valeur dans une variable scalaire de type entier.
-
La routine MEDscalaireFlottantLire/efscfl permet
de lire une valeur dans une variable scalaire de type réel.
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.
La bibliothèque MED-fichier V2.2 permet d'écrire/lire des éléments de référence de
localisation des points de Gauss :
- A l'écriture :
- La routine MEDgaussEcr/efgaue permet de créer et d'écrire dans un fichier MED
un élément de référence de localisation des points de Gauss pour un type
géométrique donné.
- A la lecture :
- La routine MEDnGauss/efngau permet de lire dans un fichier le nombre d'élément de référence de localisation des points de Gauss.
- La routine MEDGaussInfo/efgaui permet de lire les
informations sur un élément de référence de localisation des points de Gauss pour
un type géométrique donné.
- La routine MEDgaussLire/efgaul permet de lire dans un fichier MED
un élément de référence de localisation des points de Gauss pour un type
géométrique donné.
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.
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 :
- A L'écriture :
- La routine MEDlienEcr/efliee permet de créer et écrire un lien
sur un fichier distant dans le fichier courant. Un lien est identifié par son nom qui correspond
au nom du maillage stocké dans le fichier distant que l'on veut
référencer.
- A la lecture :
- La routine MEDnLien/efnlie permet de lire le nombre de liens sur fichier
distant dans un fichier.
- La routine MEDlienInfo/efliei permet de lire les informations sur
un lien vers un fichier distant (nom du lien, taille du lien).
- La routine MEDnValLien/efnvli permet de lire la taille
d'un lien dont on connait le nom : la taille lue est celle de la chaîne de
caractères correspondant aux chemin d'accès et au
nom du fichier distant.
- La routine MEDlienLire/efliel permet de lire un lien
sur un fichier distant dans le fichier courant.
Remarques :
- Pour accéder aux liens sur fichier distant définis dans un fichier MED, il existe 2 possibilités :
- La première consiste à balayer et lire l'ensemble des liens distants écrits dans un fichier :
Dès que l'on connait le nombre de liens distants dans un fichier, il est possible d'accéder
à chacun d'entre eux par l'intermédiaire d'une boucle.
Si on a "N" liens distants, 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 lien distant donné.
La lecture dans un fichier de l'ensemble des liens distants consiste donc à :
- Lire le nombre de liens sur fichier distant.
- Pour chaque lien sur fichier distant :
- Lire les informations (nom, taille).
- Allouer la mémoire nécessaire au stockage du lien (chaîne de caractères).
- Lire le lien (chemin d'accès au fichier distant).
- La seconde consiste à lire un lien directement référencé dans un champ :
Les routines de lecture d'un champ permettent de voir si le maillage sur
lequel portent les résultats est local ou non. Dans le cas où il
est déclaré non local, on peut directement accéder au lien vers
le fichier distant, pour cela il faut :
- Lire la taille du lien.
- Allouer la mémoire nécessaire au stockage du lien (chaîne de caractères).
- Lire le lien (chemin d'accès au fichier distant).
- Pour accéder à partir du fichier courant, au contenu d'un fichier distant,
on peut utiliser les fonctionnalités de montage de fichier
fournies par les routines
- MEDmonter/efmont.
- MEDdemonter/efdemo.
- La nature de la localisation d'un maillage référencé dans un champ de résultat
est fournie par la routine MEDpasdetempsInfo/efpdti pour le
maillage par défaut et par la routine MEDchampRefInfo/efrefi
pour tous les maillages.
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.
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 :
- MED_LECT : Accès en lecture uniquement (valable uniquement pour les fichiers).
- MED_ECRI : Accès en écriture (si un fichier de même nom existe déjà on ouvre le fichier, si un objet MED de même nom et de même type existe déjà, erreur).
- MED_REMP : Accès en écriture avec remplacement (si un fichier de même nom existe déjà on ouvre le fichier et on écrase son contenu, si un objet MED de même nom et de même type existe déjà, il est remplacé).
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 :
- MEDchampEcr/efchae
- MEDconnEcr/efcone
- MEDcoordEcr/efcooe
- MEDelementsEcr/efelee
- MEDequivEcr/efeque
- MEDfamEcr/effame
- MEDfichDesEcr/effide
- MEDnoeudsEcr/efnoee
- MEDnomEcr/efnome
- MEDnumEcr/efnume
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 :
- 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'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 :
- MEDchampEcr/efchae
- MEDconnEcr/efcone
- MEDcoordEcr/efcooe
- MEDelementsEcr/efelee
- MEDequivEcr/efeque
- MEDfamEcr/effame
- MEDfichDesEcr/effide
- MEDnoeudsEcr/efnoee
- MEDnomEcr/efnome
- MEDnumEcr/efnume
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 :
- A l'écriture :
- La routine MEDmaaCr/efmaac permet de créer un
maillage dans un fichier MED. Lors de la création d'un maillage,
on écrit également dans le fichier les paramètres de base qui permettent de
caractériser ce maillage à savoir son nom et sa dimension.
- A la lecture :
-
La routine MEDnMaa/efnmaa permet de lire le nombre total
de maillage dans un fichier MED.
-
Dès que l'on connait le nombre de maillage, il est possible d'accéder
au nom et aux informations sur chaque maillage à partir d'une boucle :
Si on a "N" maillages, cette boucle ira de 1 à N.
- Pour identifier le maillage associé à l'indice de boucle,
il fut utiliser la routine MEDmaaInfo/efmaai qui va lire :
Nouveau mode en vigueur dans MED-fichier V2.2
On distingue désormais les différentes catégories possibles de
maillages :
- A l'écriture :
- La routine MEDmaaCr/efmaac permet de créer un
maillage dans un fichier MED. Lors de la création d'un maillage,
on écrit également dans le fichier les paramètres de base qui permettent de
caractériser ce maillage à savoir sa dimension et
son type qui peut prendre les valeurs :
- MED_NON_STRUCTURE : maillage non structuré.
- MED_STRUCTURE : maillage structuré.
-
Si la dimension de l'espace du domaine de calcul est différente de celle du maillage
(on peut avoir un maillage 2D dans un espace de dimension 3), il est possible
d'écrire la dimension de cet espace avec la routine MEDdimEspaceCr/efespc.
L'écriture dans un maillage de la dimension de l'espace ne doit avoir lieu
que si cette dimension est différente de celle du maillage. Par défaut,
on considère que les 2 dimensions sont les mêmes.
-
La routine MEDnatureGrilleEcr/efnage permet d'écrire dans un maillage
de type MED_STRUCTURE le type de grille qui lui correspond. On distingue les types
suivants :
- MED_GRILLE_CARTESIENNE : grille cartésienne.
- MED_GRILLE_POLAIRE : grille polaire.
- MED_GRILLE_STANDARD : grille standard.
- A la lecture :
-
La routine MEDnMaa/efnmaa permet de lire le nombre total
de maillage dans un fichier MED.
-
Dès que l'on connait le nombre de maillage, il est possible d'accéder
au nom et aux informations sur chaque maillage à partir d'une boucle :
Si on a "N" maillages, cette boucle ira de 1 à N.
- Pour identifier le maillage associé à l'indice de boucle,
il faut utiliser la routine MEDmaaInfo/efmaai qui va lire :
- Le nom utilisateur du maillage.
- La dimension .
- Le type (MED_STRUCTURE ou MED_NON_STRUCTURE).
- La description associée.
- La dimension de l'espace du domaine de calcul peut être est différente de celle du maillage
(on peut avoir un maillage 2D dans un espace de dimension 3). Il est possible
de lire la dimension de cet espace avec la routine MEDdimEspaceLire/efespl.
Par défaut, si la dimension de l'espace n'est pas présente dans un maillage,
on considère qu'elle est égale à celle du maillage.
-
La routine MEDnatureGrilleLire/efnagl permet de lire dans un maillage
de type MED_STRUCTURE le type de grille qui lui correspond. On distingue les types
suivants :
- MED_GRILLE_CARTESIENNE : grille cartésienne.
- MED_GRILLE_POLAIRE : grille polaire.
- MED_GRILLE_STANDARD : grille standard.
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 :
- Le tableau des connectivités est un tableau à 1 dimension de taille égale à "n * T" où T est
la taille de l'entité géométrique.
- Le mode de stockage du tableau en mémoire est soit MED_FULL_INTERLACE, soit MED_NO_INTERLACE.
- Le type de connectivité peut-être : nodale (MED_NOD) ou descendante (MED_DESC).
- Règles à appliquer pour définir la taille mémoire "T" nécessaire au stockage de la connectivité d'une entité géométrique :
Pour calculer la taille "t" d'une entité géométrique dans le tableau de connectivité, on adopte les conventions
suivantes :
- Dans le cas de la connectivité nodale :"t" = nombre de noeuds.
- Dans le cas de la connectivité descendante :
- Entité de dimension 3 : "t" = nombre de faces.
- Entité de dimension 2 : "t" = nombre d'arêtes
- Entité de dimension 1 : "t" = nombre de noeuds.
On a alors "T" = "t" .
Pour un maillage de dimension 3, si on y place des mailles de dimension 2 ou 1
(mais également pour un maillage de dimension 2 avec des mailles de dimension 1), on doit pour ces mailles allouer un
entier supplémentaire qui permet d'indiquer une coïncidence avec une face (ou une arête) d'une
maille de dimension supérieure.
Ce numéro correspondant au numéro de la face ou de l'arête avec laquelle la maille de dimension inférieure coïncide,
est signé pour indiquer l'orientation de la maille par rapport à la face (ou de l'arête).
On a donc alors "T" = "t" + 1.
Le renseignement de ce numéro n'est pas obligatoire : on y place alors la valeur 0. Cependant l'allocation
de cet entier supplémentaire même non renseigné est obligatoire à la fois en connectivité nodale et descendante.
Les mailles de dimensions 0 ne sont pas concernées.
Exemple : pour une maille MED_TRIA3 en connectivité descendante dans un maillage de dimension "D"=3, on a "T" = 3 (nombre d'arête) + 1 (numéro de face d'une maille de dimension 3 ou la valeur 0).
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 :
- Le tableau des connectivités est un tableau à 1 dimension de taille égale à "n * T" où n
est le nombre d'éléments et T correspond à la taille mémoire (nombre d'entiers) nécessaire au stockage de la connectivité de l'entité géométrique considérée.
- Le mode de stockage du tableau des connectivités en mémoire est soit MED_FULL_INTERLACE, soit MED_NO_INTERLACE.
- Le type de connectivité peut-être : nodale (MED_NOD) ou descendante (MED_DESC).
- Règles à appliquer pour définir la taille mémoire "T" nécessaire au stockage de la connectivité d'une entité géométrique :
Pour calculer la taille "T" d'une entité géométrique dans le tableau de connectivité, on adopte les conventions
suivantes :
- Dans le cas de la connectivité nodale :"T" = nombre de noeuds.
- Dans le cas de la connectivité descendante :
- Entité de dimension 3 : "T" = nombre de faces.
- Entité de dimension 2 : "T" = nombre d'arêtes.
- Entité de dimension 1 : "T" = nombre de noeuds.
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 :
- On trouve dans un maillage :
- La famille de numéro 0 qui ne comporte aucun attribut ni groupe.
- Zéro ou plusieurs familles des noeuds dont le numéro doit être strictement positif.
- Zéro ou plusieurs familles d'éléments (mailles/faces/arêtes) dont le numéro doit être strictement négatif.
- La définition de la famille vide de numéro 0 est obligatoire, elle constitue la famille
de référence pour tous les noeuds et les éléments qui n'appartiennent
à aucun groupe et n'ont aucun attribut.
- Une famille de noeuds peut porter le même nom qu'un famille
d'éléments. Par contre les familles d'éléments (respectivement de noeuds) doivent
toutes avoir des noms différents.
- Le numéro de famille est le lien existant entre la famille considérée et
une entité du maillage (noeud, maille, face ou arête). Ce numéro doit
être unique pour chaque famille d'un maillage.
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 :
- 0 : Le nombre de famille du maillage.
- MED_ATTR : Le nombre d'attribut dans une famille.
- MED_GROUPE : Le nombre de groupe dans une famille.
Nouveau mode en vigueur dans MED-fichier V2.2
La routine MEDnFam/efnfam a été éclatée en 3 routines différentes :
- La routine MEDnFam/efnfam ne permet plus que de lire le nombre de famille
dans un maillage.
- La routine MEDnAttribut/efnatt permet de lire le nombre
d'attribut dans une famille.
- La routine MEDnGroupe/efngro permet de lire le nombre
de groupe dans une famille.
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 :
- A l'écriture :
- La routine MEDchampCr/efchac permet de créer un champ.
- La routine MEDchampEcr/efchae permet d'écrire
des valeurs du champ pour chaque type d'entité du maillage.
Les valeurs peuvent porter sur :
- Les noeuds.
- Les éléments.
- Les points de Gauss des éléments.
Ces valeurs peuvent être associées à
- Une séquence de calcul : pas de temps et/ou numéro d'ordre.
- Une référence à un profil : sélection selon une composante du champ et/ou un sous-ensemble des entités d'un même type géométrique.
- A la lecture :
- La routine MEDnChamp/efncha permet de lire le nombre de champ dans un fichier.
- Pour chaque champ :
- La routine MEDnChamp/efncha permet de lire le nombre de composante du champ.
- La routine MEDchampInfo/efchai permet de lire
les informations du champ : nom, type, nom(s) et unité(s) de(s) composante(s).
- Pour chaque type d'entité (noeuds, maille, face, arête) :
- La routine MEDnPasdeTemps/efnpdt permet de lire le nombre de
séquence de calcul (pas de temps).
- Pour chaque séquence de calcul (pas de temps) :
- La routine MEDpasdetempsInfo/efpdti permet de lire les informations sur la séquence de calcul
(pas de temps) et les valeurs à lire :
valeur, unité, numéro du pas de temps, numéro d'ordre, nombre de points de Gauss,
nom du maillage sur lequel portent les valeurs.
- La routine MEDnVal/efnval permet de lire le nombre de valeurs à lire pour la séquence.
- La routine MEDchampLire/efchal permet de lire les valeurs selon un éventuel profil.
- Si un profil est renvoyé, lire le profil.
Nouveau mode en vigueur dans MED-fichier V2.2
Trois évolutions importantes sont fournies par MED-fichier V2.2 :
- 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.
- 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.
- 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 :
- A l'écriture :
- La routine MEDchampCr/efchac permet de créer un champ.
- La routine MEDchampEcr/efchae permet d'écrire
des valeurs du champ pour chaque type d'entité d'un maillage.
Les valeurs peuvent porter sur :
- Les noeuds.
- Les éléments.
- Les points de Gauss des éléments.
Ces valeurs peuvent être associées à
- Une séquence de calcul : pas de temps et/ou numéro d'ordre.
- Une référence à un profil : sélection selon une composante du champ et/ou un sous-ensemble des entités d'un même type géométrique.
- Une référence à un élément de référence de la localisation des points de Gauss.
Informations importantes :
- Le maillage référencé peut être stocké dans un autre fichier que celui du champ.
- 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. Le premier appel à MEDchampEcr/efchae
pour une même séquence de calcul sur un type d'entité définit le maillage
par défaut.
- A une séquence de calcul donnée, un type d'entité donné et pour un maillage donné, on ne peut référencer
qu'un seul profil. Avec un profil, il existe deux modes de définition du tableau des valeurs :
- MED_COMPACT : seules les valeurs relatives au profil sont présentes en mémoire.
- MED_GLOBAL : la totalité des valeurs du champ sont présentes en mémoire. La routine
va sélectionner les valeurs à écrire selon les numéros définis dans le profil.
- A la lecture :
- La routine MEDnChamp/efncha permet de lire le nombre de champ dans un fichier.
- Pour chaque champ :
- La routine MEDnChamp/efncha permet de lire le nombre de composante du champ.
- La routine MEDchampInfo/efchai permet de lire
les informations du champ : nom, type, nom(s) et unité(s) de(s) composante(s).
- Pour chaque type géométrique d'entité fournis par le modèle MED (noeuds, maille, face, arête) :
- La routine MEDnPasdeTemps/efnpdt permet de lire le nombre de
séquence de calcul (pas de temps).
- Pour chaque séquence de calcul (pas de temps et/ou numéro d'ordre) :
- La routine MEDpasdetempsInfo/efpdti permet de lire les informations sur la séquence de calcul
(pas de temps) et les valeurs à lire :
valeur du pas de temps, unité du pas de temps,
numéro d'ordre associé,
nom du maillage par défaut sur lequel portent les valeurs,
nombre de maillages référencés dans cette séquence.
- Pour chaque maillage référencé dans la séquence de calcul :
- La routine MEDchampRefInfo/efrefi permet de lire les informations sur le maillage référencé
(nom, localisation, nombre de points de Gauss).
- Si le maillage n'est pas local, on peut accéder au lien sur fichier distant qui indique dans quel fichier il se trouve.
- La routine MEDnVal/efnval permet de lire le nombre valeurs à lire en mémoire.
- La routine MEDchampLire/efchal permet de lire des valeurs selon un éventuel profil.
- Si un profil est renvoyé, lire le profil.
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.
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 :
- Précise à quelle version de MED-fichier, medconforme est associé (ici MED-fichier V2.2.2).
- Vérifie le format du fichier (HDF) passé en paramètre (est-il au format HDF V5 ?).
- Vérifie si le fichier a été créé avec la même version de la bibliothèque MED-fichier (MED V2.2).
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 :
- Les maillages non structurés.
- Les champs de résultats.
- Les profils éventuels.
Exemple de traces d'exécution :
Il faut tout d'abord mettre à jour le mode d'accès aux données.
Pour cela, il faut :
- 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 :
- 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.
- Retirer le paramètre mode des appels aux routines suivantes :
- MEDchampEcr/efchae
- MEDconnEcr/efcone
- MEDcoordEcr/efcooe
- MEDelementsEcr/efelee
- MEDequivEcr/efeque
- MEDfamEcr/effame
- MEDfichDesEcr/effide
- MEDnoeudsEcr/efnoee
- MEDnomEcr/efnome
- MEDnumEcr/efnume
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 :
- Des coordonnées des noeuds
d'un maillage : Les routines impactées sont alors MEDcoordEcr/efcooe,
MEDcoordLire/efcool, MEDnoeudsEcr/efnoee et
MEDnoeudsLire/efnoel.
- Des composantes d'un champ : Les routines impactées sont
alors MEDchampCr/efchac et MEDchampInfo/efchai.
- Des noms des entités : Les routines impactées sont
alors MEDnomEcr/efnome, MEDnomLire/efnoml,
MEDnoeudsEcr/efnoee,MEDnoeudsLire/efnoel,
MEDelementsEcr/efele,MEDelementsLire/efell.
On doit désormais distinguer les maillages structurés (MED_STRUCTURE)
des maillages non structurés (MED_NON_STRUCTURE).
On a 2 possibilités :
- Prendre en compte ces deux types de maillages : SCENARIO 1.
- Continuer à ne pas prendre en compte que les maillages non structurés : SCENARIO 2.
- APPLICATION du SCENARIO 1 :
- A l'écriture :
- La routine MEDmaaCr/efmaac permet de créer un
maillage dans un fichier MED. Lors de la création d'un maillage,
on écrit également dans le fichier les paramètres de base qui permettent de
caractériser ce maillage à savoir son nom, sa dimension et
son type qui peut prendre les valeurs :
- MED_NON_STRUCTURE : maillage non structuré.
- MED_STRUCTURE : maillage structuré.
-
Si la dimension de l'espace du domaine de calcul est différente de celle du maillage
(on peut avoir un maillage 2D dans un espace de dimension 3), il est possible
d'écrire la dimension de cet espace avec la routine MEDdimEspaceCr/efespc.
L'écriture dans un maillage de la dimension de l'espace ne doit avoir lieu
que si cette dimension est différente de celle du maillage. Par défaut,
on considère que les 2 dimensions sont les mêmes.
-
La routine MEDnatureGrilleEcr/efnage permet d'écrire dans un maillage
de type MED_STRUCTURE le type de grille qui lui correspond. On distingue les types
suivants :
- MED_GRILLE_CARTESIENNE : grille cartésienne.
- MED_GRILLE_POLAIRE : grille polaire.
- MED_GRILLE_STANDARD : grille standard.
- A la lecture :
-
La routine MEDnMaa/efnmaa permet de lire le nombre total
de maillage dans un fichier MED.
-
Dès que l'on connait le nombre de maillage, il est possible d'accéder
au nom et aux informations sur chaque maillage à partir d'une boucle :
Si on a "N" maillages, cette boucle ira de 1 à N.
- Pour identifier le maillage associé à l'indice de boucle,
il faut utiliser la routine MEDmaaInfo/efmaai qui va lire :
- Le nom utilisateur du maillage.
- La dimension .
- Le type (MED_STRUCTURE ou MED_NON_STRUCTURE).
- La description associée.
- La dimension de l'espace du domaine de calcul peut être est différente de celle du maillage
(on peut avoir un maillage 2D dans un espace de dimension 3). Il est possible
de lire la dimension de cet espace avec la routine MEDdimEspaceLire/efespl.
Par défaut, si la dimension de l'espace n'est pas présente dans un maillage,
on considère qu'elle est égale à celle du maillage.
-
Dans le cas d'un maillage structuré, la routine MEDnatureGrilleLire/efnagl permet de lire dans un maillage
de type MED_STRUCTURE le type de grille qui lui correspond. On distingue les types
suivants :
- MED_GRILLE_CARTESIENNE : grille cartésienne.
- MED_GRILLE_POLAIRE : grille polaire.
- MED_GRILLE_STANDARD : grille standard.
- APPLICATION DU SCENARIO 2 :
- A l'écriture :
- La routine MEDmaaCr/efmaac permet de créer un
maillage dans un fichier MED. Lors de la création d'un maillage,
on écrit également dans le fichier les paramètres de base qui permettent de
caractériser ce maillage à savoir son nom, sa dimension et
son type : MED_NON_STRUCTURE (maillage non structuré).
-
Si la dimension de l'espace du domaine de calcul est différente de celle du maillage
(on peut avoir un maillage 2D dans un espace de dimension 3), il est possible
d'écrire la dimension de cet espace avec la routine MEDdimEspaceCr/efespc.
L'écriture dans un maillage de la dimension de l'espace ne doit avoir lieu
que si cette dimension est différente de celle du maillage. Par défaut,
on considère que les 2 dimensions sont les mêmes.
- A la lecture :
-
La routine MEDnMaa/efnmaa permet de lire le nombre total
de maillage dans un fichier MED.
-
Dès que l'on connait le nombre de maillage, il est possible d'accéder
au nom et aux informations sur chaque maillage à partir d'une boucle :
Si on a "N" maillages, cette boucle ira de 1 à N.
- Pour identifier le maillage associé à l'indice de boucle,
il faut utiliser la routine MEDmaaInfo/efmaai qui va lire :
- Le nom utilisateur du maillage.
- La dimension .
- Le type (MED_STRUCTURE ou MED_NON_STRUCTURE).
- La description associée.
Dans le cas où le maillage est de type MED_STRUCTURE, il
faut générer une erreur ou un avertissement.
- La dimension de l'espace du domaine de calcul peut être est différente de celle du maillage
(on peut avoir un maillage 2D dans un espace de dimension 3). Il est possible
de lire la dimension de cet espace avec la routine MEDdimEspaceLire/efespl.
Par défaut, si la dimension de l'espace n'est pas présente dans un maillage,
on considère qu'elle est égale à celle du maillage.
Remarques :
- Si vous avez choisi le scénario 2, l'accès aux entités, familles, équivalences
d'un maillage reste identique.
- Si vous avez choisi le scénario 1, l'accès aux entités, familles, équivalences
d'un maillage MED_NON_STRUCTURE reste identique. Par contre vous devez définir l'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 :
- La structure des coordonnées de la grille et les coordonnées des noeuds du maillage.
Il faut donc prendre en compte les routines suivantes :
- A l'écriture :
- La routine MEDstructureCoordEcr/efscoe permet de définir la structure
des coordonnées d'une grille de type MED_GRILLE_STANDARD.
- La routine MEDcoordEcr/efcooe permet ensuite d'écrire les coordonnées des noeuds
du maillage.
- A la lecture :
- La routine MEDnEntMaa/efnema permet de
lire le nombre de noeuds dans
un maillage structuré (MED_STRUCTURE) correspondant à une grille de type MED_GRILLE_STANDARD.
- La routine MEDstructureCoordLire/efscol permet de lire la structure
des coordonnées d'une grille de type MED_GRILLE_STANDARD.
- La routine MEDcoordLire/efcool permet ensuite de lire les coordonnées des noeuds
du maillage.
- Les noms des noeuds et des éléments (optionnel).
- Les numéros des noeuds et des éléments (optionnel).
- Les numéros de famille de noeuds et des éléments.
- Les familles de noeuds et d'éléments.
Pour une grille de type MED_GRILLE_CARTESIENNE ou MED_GRILLE_POLAIRE, on doit pouvoir écrire/lire dans un fichier MED :
- Les indices de coordonnées selon chacun des axes.
Il faut donc prendre en compte les routines suivantes :
- L'écriture des coordonnées d'un maillage structuré correspondant à une grille
MED_GRILLE_CARTESIENNE ou MED_GRILLE_POLAIRE ne nécessite que l'écriture
des indices de coordonnées selon chacun des axes de la grille.
La routine MEDindicesCoordEcr/eficoe permet l'écriture des indices d'un axe donné.
Il faut appeler cette routine pour chacun des axes de la grille.
- La lecture se fait axe d'indices de coordonnées par axe d'indices de coordonnées.
Pour un axe donné, il s'agit de :
- Lire le nombre d'indice sur l'axe. La routine MEDnEntMaa/efnema
permet de lire cette information.
- Allouer la mémoire nécessaire au stockage des indices.
- Lire les indices de coordonées de l'axe. La routine MEDindicesCoordLire/eficol
pemet de réaliser cette opération.
- Les noms des noeuds et des éléments (optionnel).
- Les numéros des noeuds et des éléments (optionnel).
- Les numéros de famille de noeuds et des éléments.
- Les familles de noeuds et d'éléments.
Remarques : Au même titre que pour les maillages MED_NON_STRUCTURE,
- Pour écrire/lire les noms des noeuds et des éléments, il faut utiliser
les routines MEDnomEcr/efnome et MEDnomLire/efnoml.
- Pour écrire/lire les numéros des noeuds et des éléments, il faut utiliser
les routines MEDnumEcr/efnume et MEDnumLire/efnuml.
- Pour écrire/lire les numéros de famille des noeuds et des éléments, il faut utiliser
les routine MEDfamEcr/effame et MEDfamLire/effaml.
- Pour écrire et lire les familles de noeuds et d'éléments, il faut utilisr les routines :
MEDfamCr/effamc, MEDnFam/efnfam, MEDnGroupe/efngro, MEDnAttribut/efnatt
et MEDfamInfo/effami.
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 :
- Le tableau des connectivités est un tableau à 1 dimension de taille égale à "n * T" où n
est le nombre d'éléments et T correspond à la taille mémoire (nombre d'entiers) nécessaire au stockage de la connectivité de l'entité géométrique considérée.
- Le mode de stockage du tableau des connectivités en mémoire est soit MED_FULL_INTERLACE, soit MED_NO_INTERLACE.
- Le type de connectivité peut-être : nodale (MED_NOD) ou descendante (MED_DESC).
- Règles à appliquer pour définir la taille mémoire "T" nécessaire au stockage de la connectivité d'une entité géométrique :
Pour calculer la taille "T" d'une entité géométrique dans le tableau de connectivité, on adopte les conventions
suivantes :
- Dans le cas de la connectivité nodale :"T" = nombre de noeuds.
- Dans le cas de la connectivité descendante :
- Entité de dimension 3 : "T" = nombre de faces.
- Entité de dimension 2 : "T" = nombre d'arêtes.
- Entité de dimension 1 : "T" = nombre de noeuds.
On a 2 possibilités :
- Prendre en compte les polyèdres et les polygones quelconques : SCENARIO 3.
- Continuer à ne pas prendre en compte que les éléments géométriques pré-définis : SCENARIO 4.
- APPLICATION du SCENARIO 3 :
- A l'écriture :
- L'écriture de la connectivité des mailles de type MED_POLYEDRE est réalisée
par la routine MEDpolyedreConnEcr/efpece.
- L'écriture de la connectivité des mailles/faces de type MED_POLYGONE est réalisée
par la routine MEDpolygoneConnEcr/efpgce.
- A la lecture :
-
Pour récupérer le nombre de polyèdres, il faut utiliser la routine MEDnEntMaa/efnema.
La lecture de la connectivité des mailles de type MED_POLYEDRE est réalisée
par 2 routines :
- La routine MEDpolyedreInfo/efpyei permet de lire
la taille des tableaux qu'il faudra passer en paramètre à la routine
MEDpolyedreConnLire/efpecl.
- La routine MEDpolyedreConnLire/efpecl va lire dans le
maillage la connectivité des mailles polyèdres.
- Pour récupérer le nombre de polygones, il faut utiliser la routine MEDnEntMaa/efnema.
La lecture de la connectivité des mailles/faces de type MED_POLYGONE est réalisée
par 2 routines :
- La routine MEDpolygoneInfo/efpygi permet de lire
la taille des tableaux qu'il faudra passer en paramètre à la routine
MEDpolygoneConnLire/efpgcl.
- La routine MEDpolygoneConnLire/efpgcl va lire dans le
maillage la connectivité des mailles/faces polygones.
- APPLICATION du SCENARIO 4 :
- A l'écriture :
- A la lecture :
- Pour récupérer le nombre de polyèdres, il faut utiliser la routine MEDnEntMaa/efnema.
Si ce nombre est positif il faut générer une erreur ou émettre un avertissement.
- Pour récupérer le nombre de polygones, il faut utiliser la routine MEDnEntMaa/efnema.
Si ce nombre est positif il faut générer une erreur ou émettre un avertissement.
Remarques :
- Pour écrire/lire les noms, les numéros et les numéros de familles des polyèdres et
polygones, il faut utiliser les mêmes routines que pour les autres types d'éléments.
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 :
- La routine MEDnFam/efnfam ne permet plus que de lire le nombre de famille
dans un maillage.
- La routine MEDnAttribut/efnatt permet de lire le nombre
d'attribut dans une famille.
- La routine MEDnGroupe/efngro permet de lire le nombre
de groupe dans une famille.
Il s'agit de prendre en compte les trois évolutions importantes fournies par MED-fichier V2.2 :
- 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.
- 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).
- 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 :
- A l'écriture :
- La routine MEDchampCr/efchac permet de créer un champ.
- La routine MEDchampEcr/efchae permet d'écrire
des valeurs du champ pour chaque type d'entité d'un maillage.
Les valeurs peuvent porter sur :
- Les noeuds.
- Les éléments.
- Les points de Gauss des éléments.
Ces valeurs peuvent être associées à
- Une séquence de calcul : pas de temps et/ou numéro d'ordre.
- Une référence à un profil : sélection selon une composante du champ et/ou un sous-ensemble des entités d'un même type géométrique.
- Une référence à un élément de référence de la localisation des points de Gauss.
Informations importantes :
- Le maillage référencé peut être stocké dans un autre fichier que celui du champ.
- 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. Le premier appel à MEDchampEcr/echae
pour une même séquence de calcul sur un type d'entité définit le maillage
par défaut.
- A une séquence de calcul donnée, un type d'entité donné et pour un maillage donné, on ne peut référencer
qu'un seul profil. Avec un profil, il existe deux modes de définition du tableau des valeurs :
- MED_COMPACT : seules les valeurs relatives au profil sont présentes en mémoire.
- MED_GLOBAL : la totalité des valeurs du champ sont présentes en mémoire. La routine
va sélectionner les valeurs à écrire selon les numéros définis dans le profil.
- A la lecture :
- La routine MEDnChamp/efncha permet de lire le nombre champ dans un fichier.
- Pour chaque champ :
- La routine MEDnChamp/efncha permet de lire le nombre de composante du champ.
- La routine MEDchampInfo/efchai permet de lire
les informations du champ : nom, type, nom(s) et unité(s) de(s) composante(s).
- Pour chaque type géométrique d'entité fournis par le modèle MED (noeuds, maille, face, arête) :
- La routine MEDnPasdeTemps/efnpdt permet de lire le nombre de
séquence de calcul (pas de temps).
- Pour chaque séquence de calcul (pas de temps et/ou numéro d'ordre) :
- La routine MEDpasdetempsInfo/efpdti permet de lire les informations sur la séquence de calcul
(pas de temps) et les valeurs à lire :
valeur du pas de temps, unité du pas de temps,
numéro d'ordre associé,
nom du maillage par défaut sur lequel portent les valeurs,
nombre de maillages référencés dans cette séquence.
- Pour chaque maillage référencé dans la séquence de calcul :
- La routine MEDchampRefInfo/efrefi permet de lire les informations sur le maillage référencé
(nom, localisation, nombre de points de Gauss).
- Si le maillage n'est pas local, on peut accéder au lien sur fichier distant qui indique dans quel fichier il se trouve.
- La routine MEDnVal/efnval permet de lire le nombre valeurs à lire en mémoire.
- La routine MEDchampLire/efchal permet de lire des valeurs selon un éventuel profil.
- Si un profil est renvoyé, lire le profil.
On a 2 possibilités :
- Prendre en compte les liens sur fichier distant : SCENARIO 5.
- Ne pas prendre en compte les liens sur fichier distant : SCENARIO 6.
- APPLICATION du SCENARIO 5 :
- A l'écriture :
Vous pouvez choisir d'écrire vos résultats dans un fichier et vos maillages dans un
autre. La routine MEDlienEcr/efliee permet de créer et écrire un lien
sur un fichier distant dans le fichier courant lorsque vous écrivez un résultat
qui porte sur un maillage défini dans un autre fichier que celui du champ.
- A la lecture :
Vous devez prendre en compte les liens vers fichiers distants éventuels.
- La routine MEDnLien/efnlie permet de lire le nombre de liens sur fichier
distant dans un fichier.
- La routine MEDlienInfo/efliei permet de lire les informations sur
un lien vers un fichier distant (nom du lien, taille du lien).
- La routine MEDnValLien/efnvli permet de lire la taille
d'un lien dont on connait le nom : la taille lue est celle de la chaîne de
caractères correspondant aux chemin d'accès et au
nom du fichier distant.
- La routine MEDlienLire/efliel permet de lire un lien
sur un fichier distant dans le fichier courant.
- APPLICATION du SCENARIO 6 :
- A l'écriture : il n'y a rien à faire.
- A la lecture :
A la lecture d'un champ de résultat, si les
informations renvoyées vous indiquent, que le maillage référencé
n'est pas dans le fichier courant et que vous voulez accéder au maillage,
vous devez renvoyer un erreur.
- Si vous choisissez le scénario 5 et que vous voulez accéder à partir du fichier courant,
au contenu d'un fichier distant,
vous devez utiliser les fonctionnalités de montage de fichier
fournies par les routines.
- MEDmonter/efmont.
- MEDdemonter/efdemo.
- La nature de la localisation d'un maillage référencé dans un champ de résultat
est fournie par la routine MEDpasdetempsInfo/efpdti pour le
maillage par défaut et par la routine MEDchampRefInfo/efrefi
pour tous les maillages.
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 :
- A l'écriture :
- La routine MEDgaussEcr/efgaue permet de créer et d'écrire dans un fichier MED
un élément de référence de localisation des points de Gauss pour un type
géométrique donné.
- A la lecture :
- La routine MEDnGauss/efngau permet de lire dans un fichier le nombre d'élément de référence de localisation des points de Gauss.
- La routine MEDGaussInfo/efgaui permet de lire les
informations sur un élément de référence de localisation des points de Gauss pour
un type géométrique donné.
- La routine MEDgaussLire/efgaul permet de lire dans un fichier MED
un élément de référence de localisation des points de Gauss pour un type
géométrique donné.
On a 2 possibilités :
- La première est de ne pas prendre en compte
les variables scalaires. Dans ce cas de figure, on ne change rien à l'interface.
- La seconde est de pouvoir écrire/lire ces variables.
Dans cette seconde optique, vous devez prendre en compte les routines
sur les variables scalaires fournies par MED-fichier V2.2 :
- A l'écriture :
- La routine MEDscalaireCr/efscac permet de créer
une variable scalaire dans un fichier.
-
La routine MEDscalaireEntierEcr/efscee permet
d'écrire une valeur dans une variable scalaire de type entier.
-
La routine MEDscalaireFlottantEcr/efscfe permet
d'écrire une valeur dans une variable scalaire de type réel.
- A la lecture :
- La routine MEDnScalaire/efnsca permet de lire le nombre
de variables scalaire dans un fichier.
- La routine MEDscalaireInfo/efscai permet de lire les informations
sur une variable scalaire.
- La routine MEDnScalairePasdeTemps/efnspd permet de lire
le nombre de pas de temps dans une variable scalaire.
- La routine MEDscalairePasdetempsInfo/efspdi permet de lire les informations
sur un pas de temps. Il s'agit en fait d'un couple (pas de temps, numéro d'ordre).
-
La routine MEDscalaireEntierLire/efscel permet
de lire une valeur dans une variable scalaire de type entier.
-
La routine MEDscalaireFlottantLire/efscfl permet
de lire une valeur dans une variable scalaire de type réel.