Documentation de la bibliothèque MED-fichier V2.2 : Guide d'utilisation - Module "MED_Champ".
|
Retour à la page de garde du guide d'utilisation
Les routines disponibles permettent de :
- Créer un champ.
- Créer un lien vers un fichier distant (les résultats peuvent porter sur les entités d'un maillage stocké dans un fichier distant)
(NOUVELLE FONCTIONNALITE).
- Ecrire des valeurs de résultat dans un champ portant sur les entités d'un maillage qui peut être local (dans le même fichier) ou distant (le maillage
est contenu dans un autre fichier).
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 (NOUVEAU !).
- Lire le nombre de lien vers des fichiers distants dans un fichier (NOUVELLE FONCTIONNALITE).
- Lire les informations sur un lien vers un fichier distant (NOUVELLE FONCTIONNALITE).
- Lire la taille d'un lien vers un fichier distant (NOUVELLE FONCTIONNALITE).
- Lire un lien vers un fichier distant (NOUVELLE FONCTIONNALITE).
- Lire le nombre de champ dans un fichier ou de composantes dans un champ.
- Lire les informations sur un champ.
- Lire le nombre de pas de temps (séquence de calcul) dans un champ.
- Lire les informations sur un pas de temps (séquence de calcul).
- Lire le nombre de maillages référencés dans un pas de temps (séquence de calcul) (NOUVELLE FONCTIONNALITE).
- Lire les informations sur les valeurs référencées par un maillage dans une séquence de calcul (NOUVELLE FONCTIONNALITE).
- Lire le nombre de valeur à lire dans un champ pour un type géométrique d'entité donné, une
séquence de calcul donnée et un maillage donné.
- Lire des valeurs dans un champ sur les entités d'un maillage qui peut être local (dans le même fichier) ou distant (le maillage
est contenu dans un autre fichier).
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 (NOUVEAU !).
Ces routines sont détaillées dans le guide de référence du module "MED_Champ".
La routine MEDChampCr/efchac permet de créer un champ dans un fichier
MED.
Un champ est identifié par son nom qui est une chaîne de MED_TAILLE_NOM (32) caractères.
Un champ est composé de plusieurs composantes scalaires. Chaque composante
se voit attribuer un nom et une unité.
Un champ porte un type qui correspond au type de ses composantes qui peut être :
- MED_FLOAT64 : réel 64 bits IEEE.
- MED_INT32 : entier 32 bits.
- MED_INT64 : entier 64 bits.
La routine MEDchampEcr/efchae permet d'écrire dans un champ
des valeurs correspondant à un résultat portant sur un type d'entité géométrique
d'un maillage donné. Si le champ porte sur plusieurs types d'entité, il faut
donc appeler cette routine autant de fois qu'il y a de types différents.
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 (NOUVEAU !).
Remarques :
- Le maillage référencé 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.
- 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 (NOUVEAU !). 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.
- Dans un même champ, il n'est pas possible de référencer un maillage local
et un maillage distant portant le même nom.
- Le mode de stockage mémoire du tableau de valeur à écrire est au choix :
- MED_FULL_INTERLACE.
- MED_NO_INTERLACE.
- 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 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 élément de référence de la localisation des points de Gauss.
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.
Les données écrites sont donc :
- Le nom du lien qui doit correspondre au nom du maillage.
- Le chemin d'accès au fichier distant.
Remarques :
- Cette routine permet d'indiquer que le maillage qui donne son
nom au lien n'est pas défini dans le fichier courant, mais
dans un autre fichier (le fichier distant) dont on spécifie le
chemin d'accès.
- 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.
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).
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).
Remarques :
- Le nom du lien correspond au nom de l'objet stocké dans le
fichier distant, ici le nom du maillage.
- 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 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. 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.
L'information lue correspond au chemin d'accès au fichier distant.
Remarques :
- 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.
Le modèle d'accès complet en lecture au(x) champ(s) d'un fichier MED consiste à :
- Lire le nombre de champ.
- Pour chaque champ :
- Lire le nombre de composante.
- Lire les informations du champ : nom, type, noms et unités de la ou des composante(s).
- Pour chaque type géométrique d'entité fournis par le modèle MED (noeuds, maille, face, arête) :
- Lire le nombre de séquence de calcul (pas de temps et/ou numéro d'ordre).
- Pour chaque séquence de calcul (pas de temps et/ou numéro d'ordre) :
- Lire les informations sur le pas de temps et les valeurs stockées
(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 :
- 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.
- Lire le nombre valeurs à lire en mémoire (taille du tableau à allouer).
- Allouer la mémoire pour le stockage des valeurs.
- Lire des valeurs selon un éventuel profil.
- Si un profil est renvoyé, lire le profil.
Remarques :
- Ce mode d'accès aux champs d'une fichier MED est un mode d'accès exhaustif qui garantit
de pouvoir lire tous les champs de tous les fichiers MED V2.2.
Vous pouvez cependant choisir de définir un mode d'accès plus restreint notamment si vous ne pouvez pas gérer :
- Les séquences de calcul.
- Les références sur plusieurs maillages dans une même séquence de calcul.
Toutes ces restrictions possibles sont présentées en détail dans
le guide de référence du module "MED_Champ".
La routine MEDnChamp/efncha permet de lire selon la valeur des ses paramètres :
- Le nombre de champ dans un fichier.
- Le nombre de composante d'un champ.
La routine MEDchampInfo/efchai permet de lire les
informations sur un champ.
Les informations lues sont :
- Le nom du champ.
- Le type des composantes du champ.
- Le nom et l'unité de chacune des composantes du champ.
Remarques :
-
Un champ est identifié par son nom qui est une chaîne de MED_TAILLE_NOM (32) caractères.
-
Un champ est composé de plusieurs composantes scalaires. Chaque composante
se voit attribuer un nom et une unité.
- Un champ porte un type qui correspond au type de ses composantes qui peut être :
- MED_FLOAT64 : réel 64 bits IEEE.
- MED_INT32 : entier 32 bits.
- MED_INT64 : entier 64 bits.
La routine MEDnPasdeTemps/efnpdt permet de lire le nombre de
séquence de calcul dans un champ pour un type d'entité donné. Une séquence de calcul
correspond à un pas de temps et/ou un numéro d'ordre.
La routine MEDpasdetempsInfo/efpdti permet de lire les informations
sur une séquence de calcul (pas de temps et/ou numéro d'ordre) pour un type
d'entité donné.
Les informations lues sont :
- Le pas de temps : valeur réelle, numéro, unité.
- Le numéro d'ordre.
- Le nom du maillage par défaut sur lequel portent les valeurs de résultats stockées dans cette séquence de calcul.
Ce maillage est soit local, soit distant.
- Le nombre de maillages référencés dans cette séquence : les valeurs d'un champ
pour un même séquence de calcul peuvent porter sur différents maillages.
- Le nombre de points de Gauss. Le nombre de points de Gauss est lié au type
géométrique de l'élément et est constant pour un type géométrique donné.
La routine MEDnChampRef/efnref permet de lire le nombre de maillage référencés dans
une séquence de calcul (pas de temps et/ou numéro d'ordre).
Remarques :
- Cette information est également fournie par MEDpasdetempsInfo/efpdti.
Cette routine est donc à utilisée uniquement si vous ne pouvez pas
utiliser les séquences de calcul dans les champs de résultat.
- Une même séquence de calcul peut contenir des valeurs sur des entités de plusieurs
maillages.
La routine MEDchampRefInfo/efrefi permet de lire les informations sur les valeurs
relatives à un maillage dans une séquence de calcul
Les informations lues sont :
- Le nom du maillage référencé.
- La nature de la localisation du maillage : locale ou dans un fichier distant.
- Le nombre de points de Gauss. Le nombre de points de Gauss est lié au type
géométrique de l'élément et est constant pour un type géométrique donné.
La routine MEDnVal/efnval permet de lire le nombre de valeur à lire dans un champ pour
- Un type géométrique d'entité donné,
- Une séquence de calcul donnée,
- Un maillage donné.
Remarques :
- Si un profil existe pour ces valeurs, cette routine renvoie selon le mode
mémoire choisi :
- MED_COMPACT : Le nombre de valeurs définies par le profil.
- MED_GLOBAL : Le nombre total de valeurs du champ.
- Cette routine prend en compte le nombre de points de Gauss, mais pas
le nombre de composantes du champ. A l'allocation, il convient donc
de multiplier le nombre de valeur obtenu par le nombre de composantes.
La routine MEDchampLire/efchal permet de lire dans un champ
des valeurs correspondant à un résultat :
- Portant sur un type d'entité géométrique.
Les valeurs peuvent porter sur :
- Les noeuds.
- Les éléments.
- Les points de Gauss des éléments.
- Pour une séquence de calcul (pas de temps/numéro d'ordre).
- Pour un maillage donné.
Les valeurs lues peuvent être associées à
- 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 (NOUVEAU !).
Remarques :
- Le maillage référencé et passé en argument peut être stocké dans un autre fichier que celui du champ.
Dans un même champ, il n'est pas possible d'avoir un maillage local
et un maillage distant portant le même nom.
- Le mode de stockage mémoire du tableau de valeurs est soit :
- MED_FULL_INTERLACE.
- MED_NO_INTERLACE.
- 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 de 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 à lire selon les numéros définis dans le profil.
- 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 élément de référence de localisation des points de Gauss.
Le programme suivant présente les différents cas d'utilisations
possibles quant à l'écriture de valeurs d'un champ de résultat dans un fichier MED -i.e :
- Création dans le fichier "test10.med" de deux champs : un champ entier et un champ réel.
- Ecriture de valeurs de résultats dans ces deux champs selon différents cas d'utilisation :
- Avec et sans séquence de calcul. Pour une même séquence les valeurs
peuvent porter sur les entités de plusieurs maillages. Les maillages
sont soit locaux, soit déclarés dans des fichiers distants par des liens
sur fichiers distants. Les liens sur fichiers distants référencés
sont créés dans le fichier.
- Avec et sans profils. Les profils référencés sont également créés dans le fichier.
- Les valeurs portent sur différents types d'entités :
- Noeuds.
- Eléments.
- Points de Gauss des éléments. Dans ces cas là, les éléments de référence de
la localisation des points de Gauss sont créés dans le fichier.
- Fermeture du fichier "test10.med".
Accès aux sources :
Ce programme permet de lire tous les champs de résultats
d'un fichier MED selon le modèle de programmation pré-défini
qui consiste à :
- Lire le nombre de champ.
- Pour chaque champ :
- Lire le nombre de composante.
- Lire les informations du champ : nom, type, noms et unités des composantes.
- Pour chaque type géométrique d'entité (noeud, maille, face, arête) :
- Lire le nombre de séquence de calcul (pas de temps et/ou numéro d'ordre).
- Pour chaque séquence de calcul (pas de temps et/ou numéro d'ordre) :
- Lire les informations sur le pas de temps et les valeurs stockées
(valeur du pas de temps, unité du pas de temps,
numéro d'ordre associé,
nombre de points de Gauss,
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 :
- Lire les informations sur le maillage référencé (nom,localité,nombre de points de Gauss).
- Si le maillage n'est pas local, accéder au lien sur fichier distant.
- Lire le nombre valeurs à lire en mémoire (taille du tableau à allouer).
- Allouer la mémoire pour le stockage des valeurs.
- Lire des valeurs selon un éventuel profil.
- Si un profil est renvoyé, lire le profil.
Son également lus :
- Les éventuels profils.
- Les éventuels liens sur fichiers distants.
- Les éventuels éléments de référence de la localisation des points de Gauss.
Accès aux sources :
Un champ est composé de plusieurs composantes scalaires. Chaque composante
se voit attribuer un nom et une unité.
Un champ porte un type qui correspond au type de ses composantes qui peut être :
- MED_FLOAT64 : réel 64 bits IEEE.
- MED_INT32 : entier 32 bits.
- MED_INT64 : entier 64 bits.
Les valeurs définies dans un champ de résultat portent sur les entités
d'un ou plusieurs maillages. 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.
- Un 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.
Remarques :
- Un maillage sur lequel porte les valeurs d'un champ 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. Dans un même champ, il n'est pas possible de référencer un maillage local
et un maillage distant portant le même nom.
- 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.
- 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 élément de référence de localisation des points de Gauss. La définition de la localisation
des points de Gauss est obligatoire si on définit des valeurs sur les points de Gauss dans un champ.