Documentation de la biliothèque MED-fichier V2.2 : Guide de référence - Module "MED_Champ".
|
Retour à la page du guide de référence.
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 !).
- Nom : MEDchampCr
- Signature :
med_err MEDchampCr(med_idt fid, char *cha, med_type_champ type, char *comp,
char *unit,med_int ncomp)
- Paramètres :
- fid (IN) : descripteur du fichier.
- cha (IN) : nom du champ.
- type (IN) : type du champ.
- comp (IN) : nom des composantes du champ.
- unit (IN) : unités des composantes du champ.
- ncomp (IN) : nombre de composantes.
- Code retourné : 0 si réussite, -1 sinon.
- Nom : efchac
- Signature :
subroutine efchac(fid,cha,type,comp,unit,ncomp,cret)
character*32 cha
character*16 comp,unit
integer fid, ncomp, cret, type
- Paramètres :
- fid (IN) : descripteur du fichier.
- cha (IN) : nom du champ.
- type (IN) : type du champ.
- comp (IN) : nom des composantes du champ.
- unit (IN) : unités des composantes du champ.
- ncomp (IN) : nombre de composantes.
- cret (OUT) : code de retour, 0 si réussite,
-1 sinon.
Création d'un champ dans un fichier.
- Le nom d'un champ est un chaîne de MED_TAILLE_NOM (32) caractères.
-
Un champ est composé d'une ou plusieurs composantes scalaires.
Chaque
composante se voit attribuer un nom et une unité. Chaque nom ou unité de composante est
une chaîne de MED_TAILLE_PNOM (16) caractères.
-
Le paramètre "type" définit le type
élémentaire des valeurs des champs de résultats.
- MED_FLOAT64 : flottant 64 bits IEEE.
- MED_INT32 : entier 32 bits.
- MED_INT64 : entier 64 bits.
- Nom : MEDchampEcr
- Signature :
med_err MEDchampEcr(med_idt fid, char *maa, char *cha,
unsigned char *val, med_mode_switch modswt, med_int nbelem, char * locname,
med_int numco, char * profil, med_mode_profil pflmod,
med_entite_maillage typent, med_geometrie_element typgeo,
med_int numdt,char * dt_unit, med_float dt, med_int numo)
- Paramètres :
- fid (IN) : descripteur du fichier.
- maa (IN) : nom du maillage sur lequel porte les
résultats (eventuellement distant).
- cha (IN) : nom du champ.
- val (IN) : valeurs du champ à stocker.
- modswt (IN) : mode de stockage des données utilisé en mémoire .
- nbelem (IN) : nombre de valeurs.
- locname (IN) : clé utilisée pour la définition de la localisation des points de Gauss, s'il y a
lieu .
- numco (IN) : numéro de composante à
sélectionner pour l'écriture s'il y a lieu .
- profil (IN) : nom du profil à utiliser s'il y
a lieu .
- pflmod (IN) : Indique comment lire les informations en mémoire.
- typent (IN) : type d'entité sur lequel porte
le champ résultat.
- typgeo (IN) : type géométrique de
l'entité s'il y a lieu.
- numdt (IN) : numéro du pas de temps s'il y a
lieu.
- dtunit (IN) : unité du pas de temps s'il y a
lieu.
- dt (IN) : valeur du pas de temps s'il y a lieu.
- numo (IN) : numéro d'ordre s'il y a lieu.
- Code retourné : 0 si réussite, -1 sinon.
- Nom : efchae
- Signature :
subroutine efchae(fid,maa,cha,val,modswt,n,locname,numco,
1 profil,pflmod,typent,typgeo,numdt,dtunit,
1 dt,numo,cret)
character*(*) cha,maa,profil,locname
character*16 dtunit
integer fid,val(*)
integer n,pflmod,typent,typgeo,cret
integer modswt,numco,numdt,numo
real*8 dt
- Paramètres :
- Idem Interface C
- cret (OUT) : code de retour, 0 si réussite,
-1 sinon.
Ecriture de valeurs dans un champ de résultat :
-
L'écriture des valeurs s'effectue sur un ensemble
d'entités <typent> de type géométrique
<typgeo> existantes dans le maillage <maa>.
- Si le champ
porte sur plusieurs types d'entités et/ou types
géométriques, l'enregistrement du champ s'effectue
par des appels successifs à la routine.
Classement des valeurs du champ par étape de calcul
- L'utilisateur a la possibilité d'enregistrer le
champ pour différentes étapes de calcul par appels
successifs à la routine. Il suffit de positionner un
numéro de date <numdt> et/ou un numéro
d'itération <numo>.
- Dans le cas d'une utilisation exclusive des dates, <numo> est
positionné à MED_NONOR, la date est <dt> et son unité <dtunit>.
- Dans le cas d'une utilisation exclusive d'étapes
itératives <numdt> est positionnée à
MED_NOPDT, <numo> est l'étape d'itération.
- Il est possible de stocker des ensembles différents de valeurs
sur des maillages <maa> différents à
étape de calcul fixé ( couple
(<numdt>,<numo> ).
- A étape de calcul fixée et maillage fixé une seule sélection par profil est possible.
- A étape de calcul fixée et maillage fixé une seule définition des points de Gauss est possible.
Entrelacement des données en mémoire
Si le champ a plus d'une composante, deux modes de représentation en mémoire sont disponibles :
- MED_FULL_INTERLACE : Les différentes composantes d'une
entité apparaissent avant celles de l'entité suivante
(X1Y1Z1X2Y2Z2.....).
- MED_NO_INTERLACE
: Les composantes de n°i de toutes les entités apparaissent
avant celles de n°i+1 (X1X2....Y1Y2....Z1Z2...).
Maillage local ou distant
- Le maillage est indifférement local (même fichier
MED) ou distant (fichiers MED différents).
- Il n'est
pas possible d'avoir à la fois un maillage local de nom <maa1> et un maillage
distant de même nom (lien de nom <maa1>, voir MEDlienEcr/efliee).
- Comme indiqué précédemment , une
fois la date et le numéro d'ordre fixés, il est possible
de stocker des ensembles différents de valeurs en faisant
référence à des maillages <maa>
différents.
- Le premier appel à MEDchampEcr/efchae définit
le maillage par défaut pour la date et le numéro d'ordre
donnés, c'est le maillage par défaut indiqué
à l'appel de MEDpasdetempsInfo/efpdti.
- Pour chaque référence à un maillage, il est
possible de spécifier un <profil> différent.
- Pour chaque référence à un maillage, il est
possible de spécifier une localisation des points de Gauss
<locname> différente.
Sélection d'une composante et/ou d'un sous-ensemble
d'entités de même type géométrique (profil)
Il est possible de sélectionner une composante et/ou un sous
ensemble d'entités pour lequelles <val> contient les
valeurs associées :
- Sélection d'une composante. Le paramètre
<numco> indique le numéro de la composante du champ considérée
pour chaque entité. Le mot clé MED_ALL
sélectionne toutes les composantes. Par appels successifs
à la routine il est possible d'écrire les
différentes composantes sans perdre les précédentes
(si le fichier est ouvert en mode MED_LECTURE_ECRITURE). Cette
sélection prend en compte le mode de stockage <modswt>
utilisé en mémoire.
- Sélection d'un sous-ensemble d'entités de
même type géométrique. La définition
préalable d'un profil (par appel à MEDprofilEcr/efpfle) permet
d'indiquer à MEDchampEcr/efchae le nom de profil <profil>
qui décrit le sous-ensemble des entités <typent> de
type géométrique <typgeo> pour lesquelles
<val> définit des valeurs. Quelque soit la taille du
profil, <nbelem> indique la taille du champ sans profil. En effet la
taille du profil utilisé est connue depuis l'écriture du
profil et le profil doit exister avant l'appel
à MEDchampEcr/efchae. Les profils utilisés par un ensemble de
champs doivent être stockés dans le même fichier que
ces champs.
L'utilisation conjointe des deux modes de sélection est
possible. Il est possible d'utiliser les deux modes de sélection
et une localisation des points de Gauss.
Le paramètre <pflmod> permet la sélection en mémoire
des valeurs relatives au <profil> selon deux modes :
- MED_COMPACT : Seules les valeurs relatives aux <profil> sont
en mémoire. Les points de Gauss apparaissent normalement
en mémoire. L'entrelacement est pris en compte.
- MED_GLOBAL (en test) : La totalité des
valeurs du champ sont en mémoire. MED s'occupe de
sélectionner les valeurs en fonction des numéros
indiqués à l'écriture du profil (MEDprofilEcr/efpfle).
Les points de Gauss apparaissent normalement en mémoire.
L'entrelacement est pris en compte.
L'ensemble de numéros d'entités utilisé pour
définir le profil utilise la numérotation implicite
(ordre d'apparition des entités par index croissant) des
entités. Elle ne prend pas en compte l'écriture des
numéros optionnels d'entités (MEDnumEcr/efnume).
Définition des points de Gauss
- Les
valeurs du champ peuvent être définies en des points
particuliers des
entités. La définition préalable d'une
localisation (appel à MEDgaussEcr/efgaue) permet d'indiquer à
MEDchampEcr/efchae le nom de localisation <locname>. Cette localisation
décrit le
nombre de points de Gauss et leurs localisation pour une entité
<typent>, <typgeo> de référence. Le type
géométrique utilisé à la définition
de la localisation doit être le même que le
paramètre <typgeo> passé à MEDchampEcr/efchae.
- Les valeurs (scalaires, vectorielles) aux points de Gauss d'une
entité doivent être contigües (quel que soit le mode d'entrelacement).
- Dans le cas d' un
champ à plus d'une composante, le mode
d'entrelacement <modswt> s'applique à la valeur en
chaque point de Gauss comme dans le cas d'une valeur (vectorielle) sur une
entité classique.
- La valeur de <nbelem> doit prendre en compte le
nombre de points de gauss utilisé par entité.
- Il
est possible d'utiliser une localisation des points de Gauss avec les
deux types de sélection définies
précédement.
- Si aucune localisation n'est utilisé, MED_NOGAUSS doit être passé en argument.
- Valeurs possibles pour les paramètres :
- modswt (IN) : MED_FULL_INTERLACE ou MED_NO_INTERLACE.
- locname (IN) : nom de la localisation de taille MED_TAILLE_NOM,
MED_NOGAUSS sinon.
- numco (IN) : numéro de composante à
sélectionner pour l'écriture s'il y a lieu ou MED_ALL.
- profil (IN) : nom du profil de taille MED_TAILLE_NOM, à utiliser s'il y a
lieu, MED_NOPFL sinon.
- pflmod (IN) : {MED_NO_PFLMOD,MED_COMPACT,MED_GLOBAL}.
- typent (IN) : type d'entité sur lequel porte les
résultats, soit MED_NOEUD, MED_MAILLE, MED_FACE ou MED_ARETE.
- typgeo (IN) : type géométrique de
l'entité s'il y a lieu :
- 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.
- numdt (IN) : numéro du pas de temps s'il y a
lieu, MED_NOPDT sinon.
- dtunit (IN) : unité du pas de temps s'il y a lieu
(codée sur MED_TAILLE_PNOM (16) caractères), valeur
non prise en compte sinon.
- dt (IN) : valeur du pas de temps s'il y a lieu, valeur
non prise en compte sinon.
- numo (IN) : numéro d'ordre s'il y a lieu,
MED_NONOR sinon.
- Evolutions apportées par MED-fichier V2.2 :
- Disparition
du paramètre "mode" qui spécifiait le mode
d'écriture du tableau des valeurs. Le mode
d'accès aux données d'un fichier MED se décide
désormais à l'ouverture de ce fichier.
- Remplacement du
paramètre "ngauss" par "locname". Le nombre de points de Gauss
et la localisation associée sont définis à l'appel
de MEDgaussEcr/efgaue.
- Apport fonctionnel de MED-fichier V2.2 :
- Il est désormais possible de localiser les points de GAUSS (MEDgaussEcr/efgaue).
- Le maillage peut être local ou distant.
- Pour une même
étape de calcul, il est possible de définir des ensembles
différents de valeurs en précisant des nom de maillages
différents.
- Il est possible de spécifier le mode de
stockage mémoire utilisé pour un profil.
- Nom : efncha
- Signature :
subroutine efncha(fid,ind,n,cret)
integer fid,ind,cret,n
- Paramètres :
- fid (IN) : descripteur du fichier MED.
- ind (IN) : numéro d'indice.
- n (OUT) : nombre de champ dans le fichier si "ind"
est égal à 0, le nombre de composantes du champ
correspondant
à l'indice "ind".
- cret (OUT) : code de retour, 0 si réussite,
-1 sinon.
Retourne le nombre de champ dans le fichier si "ind" est égal
à 0 ou le nombre de composantes du champ correspondant
à l'indice "ind".
Pour un fichier contenant "N" champs, la valeur de "ind" peut
aller de 1 à "N".
- Nom : MEDchampInfo
- Signature :
med_err MEDchampInfo(med_idt fid,int ind,char *cha,
med_type_champ *type,char *comp,char *unit,
med_int ncomp)
- Paramètres :
- fid (IN) : descripteur du fichier.
- ind (IN) : numéro d'indice du champ dans le
fichier.
- cha (OUT) : nom du champ.
- type (OUT) : type des valeurs des composantes du
champ.
- comp (OUT) : noms des composantes.
- unit (OUT) : nom des unités des composantes.
- ncomp (IN) : nombre de composantes.
- Code retourné : 0 si réussite, -1 sinon.
- Nom : efchai
- Signature :
subroutine efchai(fid,ind,cha,type,comp,unit,ncomp,cret)
character *(*) cha,comp,unit
integer fid,ind,type,ncomp,cret
- Paramètres :
- Idem C +
- cret (OUT) : code de retour, 0 si réussite,
-1 sinon.
Retourne les informations propres à l'identification d'un champ
:
- Nom du champ.
- Noms et unités des composantes.
- Type des composantes.
- Un champ est identifié par un nom "cha" de taille MED_TAILLE_NOM (32) caractères.
-
Un champ est composé d'une ou plusieurs composantes scalaires.
Chaque
composante se voit attribuer un nom et un type (définis
respectivement
dans "comp" et "unit"). Chaque nom ou unité de composante est
codée
sur MED_TAILLE_PNOM (16) caractères.
-
Le paramètre "type" définit le type
élémentaire des valeurs des champs de résultats :
- MED_FLOAT64 : flottant 64 bits IEEE.
- MED_INT32 : entier 32 bits.
- MED_INT64 : entier 64 bits.
- Nom : MEDnPasdeTemps
- Signature :
med_int
MEDnPasdetemps(med_idt fid,char *cha,med_entite_maillage typent, med_geometrie_element typgeo)
- Paramètres :
- fid (IN) : descripteur du fichier.
- cha (IN) : nom du champ.
- typent (IN) : type de l'entité
considéré.
- typgeo (IN) : type géométrique de
l'entité.
- Code retourné : nombre de pas de temps si
réussite, eventuellement 0, -1 si erreur.
- Nom : efnpdt
- Signature :
subroutine efnpdt(fid,cha,typent,typgeo,n,cret)
integer fid,type,geo,n,cret
character*32 cha
- Paramètres :
- Idem C +
- n (OUT) : nombre de pas de temps, eventuellement 0.
- cret (OUT) : code de retour, 0 si réussite,
-1 sinon.
Cette routine permet de découvrir pour le champ
<cha> (précédemment identifié par MEDchampInfo/efchai)
l'existence de valeurs sur les entités <typent> de type géométrique
<typegeo> :
-
Si l'utilisateur ne connait pas les
entités support et l'(es) étape(s) de calcul
relative(s) au champ qu'il veut lire, il appelle généralement cette routine au sein d'une double boucle
sur les valeurs <typent> et <typgeo>.
-
Si un champ résultat existe, elle retourne le nombre d'étapes de calcul disponibles pour le champ <cha>.
Gestion des étapes de calcul et/ou de plusieurs maillages associés
Pour la suite des traitements, différents cas d'utilisation se présentent selon
les choix opérés :
- Dans le cas d'une utilisation de MED ou l'ensemble de vos interlocuteurs ne
gère pas les séquences de calcul ou que votre propre code
n'est pas en mesure de les traiter :
- Si plus d'une séquence de calcul existe, vous devez renvoyer un
avertissement ou une erreur.
- Vous ne traiter alors que le cas où vos résultats sont associés
à aucun pas de temps, ni numéro d'ordre (MED_NOPDT,MED_NONOR).
Dans cas de figure, Vous n'avez pas
besoin par la suite d'utiliser la routine MEDpasdetempsInfo/efpdti pour identifier
l'ensemble des séquences de calcul.
-
Dans le cas où vous gérez les séquences de calcul, deux cas d'utilisation
se présentent pour la suite des traitements :
- L'ensemble de vos interlocuteurs ne gére pas les
références multiples aux maillages ou votre propre code n'est pas en mesure de les traiter :
- La routine MEDnChampRef/efnref permet de s'assurer qu'il n'y a pas plus
d'un maillage associé à la séquence de calcul.
- La routine MEDnVal/efnval
permet de connaitre la taille mémoire à allouer
pour stocker les valeurs du champ (utiliser le paramètre MED_NOREF pour indiquer que vous utilisez le paramètre
par défaut).
- La routine MEDchampLire/efchal
permet de lire les valeurs du champ sur le maillage par défaut
(utiliser le paramètre MED_NOREF pour indiquer que vous utilisez le paramètre
par défaut).
- Vous pouvez ensuite facilement tester le caractère
local ou distant du maillage par défaut. Cette localisation vous sera
indiquée par la routine MEDchampLire/efchal.
- Vous gérez les références multiples aux maillages
dans une même séquence de calcul :
- La routine MEDnChampRef/efnref permet de
connaître le nombre de maillage
associés à cette séquence.
- Pour chaque maillage référencé :
- La routine MEDchampRefInfo/efrefi
permet d'identifier chacun de ces maillages.
- La routine MEDnVal/efnval permet de connaître
la taille mémoire à allouer pour stocker les valeurs du champ
associées à chaque maillage.
- La routine MEDchampLire/efchal permet enfin de lire ces valeurs.
- Vous pouvez ensuite facilement tester le caractère
local ou distant du maillage. Cette localisation vous sera
indiquée par la routine MEDchampLire/efchal.
- Bien qu'il soit informatiquement possible d'avoir un nombre d'étapes
différent en fonction du couple ("typent","typgeo"), la présente
documentation l'interdit. Cette routine verra son interface modifiée par
la suppression des paramètres <typent> et <typegeo>.
- Le nom du champ est codé sur MED_TAILLE_NOM (32)
caractères.
- Quelques remarques sur les paramètres :
- typent (IN) : type d'entité sur lequel porte les
résultats, soit MED_NOEUD, MED_MAILLE, MED_FACE ou MED_ARETE.
- typgeo (IN) : type géométrique de
l'entité s'il y a lieu :
- 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.
- Nom : MEDpasdetempsInfo
- Signature :
med_err
MEDpasdetempsInfo(med_idt fid, char *cha, med_entite_maillage typent, med_geometrie_element typgeo,
int ind, med_int * ngauss, med_int * numdt, med_int * numo,
char * dtunit, med_float * dt, char * maa, med_booleen * local, med_int *nmaa)
- Paramètres :
- fid (IN) : descripteur du fichier.
- cha (IN) : nom du champ.
- typent (IN) : type de l'entité
considéré.
- typgeo (IN) : type géométrique de
l'entité s'il y a lieu.
- ind (IN) : indice du pas de temps dans le champ.
- ngauss (OUT) : nombre de points de Gauss, MED_NOPG si aucun.
- numdt (OUT) : numéro du pas de temps.
- numo (OUT) : numéro d'ordre.
- dtunit (OUT) : unité du pas de temps.
- dt (OUT) : valeur flottante du pas de temps.
- maa (OUT) : le nom du maillage par
défaut sur lequel le champ résultat s'applique au
couple (numdt,numo) donné.
- local (OUT) : MED_VRAI si le lien est local, MED_FAUX sinon.
- nmaa (OUT) : le nombre de maillages référencés
- Code retourné : 0 si réussite, -1 sinon.
- Nom : efpdti
- Signature :
subroutine efpdti(fid,cha,typent,typgeo,ind,ngauss,
1 numdt,numo,dtunit,dt,maa,local,nmaa,cret)
integer fid,typent,typgeo,ind,ngauss,numdt,numo,nmaa,cret
character*32 cha,maa
character*16 dtunit
logical local
real*8 dt
- Paramètres :
Idem C +- cret (OUT) : code de retour, 0 si réussite,
-1 sinon.
Lecture des informations caractérisant une séquence de calcul (pas de temps, numéro d'ordre) :
- Une fois le nombre d'étapes de calcul connu (information fournie par la routine MEDnPasTemp/efnpdt),
il est possible de lire les informations caractérisant chaque
étape par itération sur <ind>.
- La séquence de calcul est identifiée par les paramètres
<numdt> et <numo> (les valeurs renvoyées peuvent
être MED_NOPDT et MED_NONOR).
- Si <numdt> est différent de MED_NOPDT, la valeur et
l'unité de la date sont données respectivement par
les paramètres <dt> et <dtunit>.
- La routine indique le maillage par
défaut <maa> pour cette étape de calcul, sa
localité <local> et s'il existe d'autres maillages
associés par l'intermédiaire de <nmaa>.
Gestion des étapes de calcul et/ou de plusieurs maillages associés
Pour la suite des traitements, différents cas d'utilisation se présentent selon
les choix opérés :
- L'ensemble de vos interlocuteurs ne gére pas les
références multiples aux maillages ou votre propre code n'est pas en mesure de les traiter :
- La routine MEDnChampRef/efnref permet de s'assurer qu'il n'y a pas plus
d'un maillage associé à la séquence de calcul.
- La routine MEDnVal/efnval
permet de connaitre la taille mémoire à allouer
pour stocker les valeurs du champ (utiliser le paramètre MED_NOREF pour indiquer que vous utilisez le paramètre
par défaut).
- La routine MEDchampLire/efchal
permet de lire les valeurs du champ sur le maillage par défaut
(utiliser le paramètre MED_NOREF pour indiquer que vous utilisez le paramètre
par défaut).
- Vous pouvez ensuite facilement tester le caractère
local ou distant du maillage par défaut. Cette localisation vous sera
indiquée par la routine MEDchampLire/efchal.
- Vous gérez les références multiples aux maillages
dans une même séquence de calcul :
- La routine MEDnChampRef/efnref permet de
connaître le nombre de maillage
associés à cette séquence.
- Pour chaque maillage référencé :
- La routine MEDchampRefInfo/efrefi
permet d'identifier chacun de ces maillages.
- La routine MEDnVal/efnval permet de connaître
la taille mémoire à allouer pour stocker les valeurs du champ
associées à chaque maillage.
- La routine MEDchampLire/efchal permet enfin de lire ces valeurs.
- Vous pouvez ensuite facilement tester le caractère
local ou distant du maillage. Cette localisation vous sera
indiquée par la routine MEDchampLire/efchal.
- Pour un code qui ne gère pas d'étape de calcul
la valeur obtenue pour les parmètres <numdt> et <numo> doit toujours être
MED_NOPDT,MED_NONOR.
- Le nombre de points de gauss
est lié au type géométrique de
l'élément et doit donc être constant pour un type
d'entité et un type géométrique fixé.
- Nom : MEDnChampRef
- Signature :
med_int
MEDnChampRef(med_idt fid,char *cha,med_entite_maillage typent, med_geometrie_element typgeo,
, med_int numdt, med_int numo)
Paramètres :
- fid (IN) : descripteur du fichier.
- cha (IN) : nom du champ.
- typent (IN) : type de l'entité
considérée.
- typgeo (IN) : type géométrique de
l'entité, s'il y a lieu.
- numdt (IN) : numéro du pas de temps s'il y a
lieu.
- numo (IN) : numéro d'ordre s'il y a lieu.
- Code retourné : nombre de maillages
associés au champ (cha,typent,typgeo,numdt,numo), 0 si aucun, -1 si erreur
-
Nom : efnref
- Signature :
efnref(fid,cha,typent,typgeo,numdt,numo,n,cret)
integer fid,tyent,typgeo,numdt,numo,n,cret
character*32 cha
- Paramètres :
- Idem Interface C +
- n (OUT) : nombre de maillages
associés au champ (cha,typent,typgeo,numdt,numo), 0 si aucun
- cret (OUT) : code de retour, 0 si réussite,
-1 sinon.
Description
Cette routine renvoie le nombre de maillages associés au champ <cha>
sur les entités <typent> de type géométrique
<typgeo> à l'étape de calcul
(<numdt>,<numo>).
- Cette information est également
renvoyée par la routine MEDpasdetempsInfo/efpdti.
La routine MEDnChampRef/efnref est donc utile dans
le cas d'une communauté d'utilisateurs ou d'un code ne gérant pas les
étapes de calcul mais gérant les références
multiples aux maillages.
- Apport fonctionnel de MED-fichier V2.2 :
possibilité d'associer plusieurs maillages dans une même séquence
de calcul.
- Signature :
med_int
MEDnVal(med_idt fid, char *cha, med_entite_maillage typent,
med_geometrie_element typgeo, med_int numdt, med_int numo, char * maa, med_mode_profil pflmod)
- Paramètres :
- fid (IN) : descripteur du fichier.
- cha (IN) : nom du champ.
- typent (IN) : type de l'entité
considérée.
- typgeo (IN) : type géométrique de
l'entité, s'il y a lieu.
- numdt (IN) : numéro du pas de temps s'il y a
lieu.
- numo (IN) : numéro d'ordre s'il y a lieu.
- maa (IN) : le nom du maillage sur lequel s'applique le champ
- pflmod (IN) : Indique s'il faut calculer le nombre de valeurs pour un mode MED_COMPACT ou MED_GLOBAL.
- Code retourné : nombre de
valeurs dans le champs
sur les entités du maillage spécifiées et selon le
pas de temps et le numéro d'ordre. La valeur -1 est
retourné si le champ n'existe pas pour les paramètres
demandés.
- Nom : efnval
- Signature :
subroutine efnval(fid,cha,typent,typgeo,numdt,numo,maa,pflmod,n,cret)
integer fid,typent,typgeo,n,cret
integer numdt, numo, pflmod
character *(*) cha, maa
- Paramètres :
- Idem Interface C +
- n (OUT) : nombre de valeurs dans le champs sur les
entités du maillage spécifiées et selon le pas de
temps et le numéro d'ordre.
- cret (OUT) : code de retour, 0 si réussite,
-1 sinon.
Retourne le nombre de valeurs du champ <cha> à l'étape de calcul (<numdt>,<numo>) sur les
entités <tyent> de type géométrique <typgeo> du maillage <maa>.
Si un profil existe pour ce champ, cette routine calcule le nombre de valeurs pour une future lecture en mode :
- MED_COMPACT : Seules les valeurs relatives au <profil> (renvoyé par MEDchampLire/efchal ) seront
en mémoire. Si aucun profil n'existe l'appel est équivalent à MED_GLOBAL.
- MED_GLOBAL : La totalité des
valeurs du champ seront lues en mémoire. La routine MEDchampLire/efchal s'occupera de
placer en mémoire les valeurs en fonction des numéros
indiqués par le <profil>.
Si vous ne gérez pas les
références multiples aux maillages :
- Vous devez utiliser le paramètre
MED_NOREF pour référencer le maillage par défaut
à la fois dans MEDnVal/efnval et MEDchampLire/efchal.
- Le calcul du nombre de valeurs prend en compte le nombre de points
de Gauss mais pas le nombre de composantes du champ. Il
convient donc de multiplier le nombre de valeurs obtenu par le nombre
de composantes du champ.
- Apport fonctionnel de MED-fichier V2.2 :
- Il est désormais
possible de connaître de façon précise la taille
à allouer si un profil est utilisé.
- Il est désormais possible de référencer plusieurs maillages dans une même séquence de calcul.
- Nom : MEDchampLire
- Signature :
med_err
MEDchampLire(med_idt fid,char *maa, char *cha, unsigned char *val,med_mode_switch modswt,med_int numco,
char * locname, char *profil, med_mode_profil pflmod, med_entite_maillage typent, med_geometrie_element typgeo,
med_int numdt, med_int numo)
- Paramètres :
- fid (IN) : descripteur du fichier.
- maa
(IN/OUT) :
- IN : Nom du maillage sur lequel porte les résultats.
- IN/OUT :
- IN : MED_NOREF
- OUT : nom du maillage par défaut.
- cha (IN) : nom du champ où lire les valeurs.
- val (OUT) : tableau des valeurs.
- modswt (IN) : mode de stockage des données
dans "val".
- numco (IN) : numéro de composante à
sélectionner pour la lecture s'il y a lieu.
- locname (IN) : nom du modùle de localisation des points de Gauss pour le type géométrique concerné.
- profil (OUT) : nom du profil utilisé.
- pflmod (IN) : Indique comment lire les informations en mémoire.
- typent (IN) : type d'entité sur lequel porte
les résultats.
- typgeo (IN) : type géométrique de
l'entité s'il y a lieu.
- numdt (IN) : numéro du pas de temps s'il y a
lieu.
- numo (IN) : numéro d'ordre s'il y a lieu.
- Code retourné : 0 si réussite, -1 sinon.
- Nom : efchal
- Signature :
subroutine efchal(fid,maa,cha,val,
1 modswt,numco,locname,profil,pflmod,
1 typent,typgeo,
1 numdt, numo,cret)
character *(*) cha,maa,locname,profil
integer fid,val(*),n,typent,typgeo,cret
integer modswt,numco,pflmod,numdt,numo
- Paramètres :
- Idem interface C +
- cret (OUT) : code de retour, 0 si réussite,
-1 sinon.
Lecture des valeurs dans un champ de résultat :
- Il est possible de lire le champ
<cha> à l'étape de calcul
(<numdt>,<numo>) sur un ensemble
d'entités <typent> de type géométrique
<typgeo> existantes dans le maillage <maa>.
- Cet ensemble
peut être la totalité des entités disponibles
ou un ensemble réduit définit par un <profil>.
- Si le champ
porte sur plusieurs types d'entités et/ou types
géométriques, sa lecture s'effectue
par des appels successifs à la routine.
Lecture des valeurs du champ pour différentes étapes de calcul
-
Il est possible de lire des ensembles différents de valeurs
pour une même séquence de calcul identifiée par le couple
(<numdt>,<numo>) en faisant varier le paramètre <maa>
qui permet d'identifier le maillage référencé :
- Le nombre de maillage référencés
dans une séquence de calcul ainsi que le nom du maillage
par défaut sont fournis par la routine
MEDpasdetempsInfo/efpdti. Le nombre de
maillage référencés est également fourni par la routine
MEDnChampRef/efnref.
- La routine MEDchampRefInfo/efrefi permet d'identifier
tous les maillages référencés en supplément du maillage par défaut.
-
Dans le cas d'une utilisation exclusive des dates, le paramètre <numo> est
positionné à MED_NONOR, la date du pas de temps est <dt> et son unité <dtunit>.
-
Dans le cas d'une utilisation exclusive d'étapes
itératives, <numdt> est positionnée à
MED_NOPDT, <numo> est l'étape d'itération.
- A une étape de calcul fixée et un maillage fixé, un unique profil peut être défini
- A
une étape de calcul fixée et un maillage fixé, une seule
localisation des points de Gauss peut être définie.
-
Si vous ne gérez pas les étapes de calcul et les références multiples aux maillages :
- Le paramètre<maa> doit être positionné à MED_NOREF.
- Le paramètre <numdt> doit être positionné à MED_NOPDT
- Le paramètre <numo> doit être positionné à MED_NONOR.
A noter qu'au préalable la routine
MEDnVal/efnval permet de connaître la taille du tableau
des valeurs à lire. Cette routine prend en compte le profil eventuel et le nombre de
points de GAUSS .
Entrelacement des données en mémoire
Si le champ a plus d'une composante, il est possible
de définir le mode de représentation mémoire
attendu :
- MED_FULL_INTERLACE : Les différentes composantes d'une
entité apparaissent avant celles de l'entité suivante
(X1Y1Z1X2Y2Z2.....).
- MED_NO_INTERLACE
: Les composantes de n°i de toutes les entités apparaissent
avant celles de n°i+1 (X1X2....Y1Y2....Z1Z2...).
Maillage local ou distant
- Le maillage est indifférement local (même fichier
MED) ou distant (fichiers MED différents).
- Il n'est
pas possible d'avoir à la fois un maillage local de nom <maa1> et un maillage
distant de même nom.
- Pour chaque référence à un maillage, il est
possible d'obtenir un <profil> différent.
- Pour chaque référence à un maillage, il est
possible d'obtenir une localisation des points de Gauss
<locname> différente.
Lecture d'une composante et/ou d'un sous-ensemble
d'entités de même type géométrique (profil)
Il est possible de lire uniquement une composante et/ou un sous
ensemble d'entités :
- Lecture d'une composante : Le paramètre
<numco> indique le numéro de la composante à
lire parmi les composantes disponibles. Même pour
la relecture d'une seule composante, <val> doit avoir un
emplacement mémoire réservé pour toutes les composantes.
Le mot clé MED_ALL
sélectionne toutes les composantes. Par appels successifs
à la routine il est possible de lire les
différentes composantes. Cette
sélection prend en compte le mode de stockage <modswt>
utilisé en mémoire.
- Lecture
d'un sous-ensemble d'entités de
même type géométrique. Si le champ à
été préalablement écrit avec un
profil le nom du <profil>
est retourné. Il décrit le sous-ensemble
des entités <typent> de
type géométrique <typgeo> pour lesquelles
<val> contient des valeurs. Les profils utilisés par
un ensemble de
champs doivent être stockés dans le même fichier que
ces champs.
L'utilisation conjointe des deux modes de sélection est
possible. Il est également possible d'utiliser les deux modes de sélection
et une localisation des points de Gauss.
Le paramètre <pflmod> permet l'enregistrement en mémoire
des valeurs relatives au <profil> selon deux modes :
- MED_COMPACT :
- Seule les valeurs relatives au <profil> sont
en mémoire.
- Les points de Gauss apparaissent normalement
en mémoire.
- L'entrelacement est pris en compte.
- MED_GLOBAL
(en test) :
- La totalité des
valeurs du champ sont en mémoire.
- La routine MEDchampLire/efchal s'occupe de placer en mémoire les valeurs
en fonction des numéros
indiqués par le <profil>.
- Les points de Gauss
apparaissent normalement en mémoire.
- L'entrelacement est pris en
compte.
L'ensemble de numéros d'entités utilisé pour
définir le profil utilise la numérotation implicite
(ordre d'apparition des entités par index croissant) des
entités. Elle ne prend pas en compte l'écriture des
numéros optionnels d'entités.
Lecture des valeurs aux points de Gauss
- Les
valeurs du champ peuvent être définies sur les points
de Gauss des éléments d'un maillage.
- Dans ce cas, la routine MEDchampLire/efchal
retourne le nom de l'élément de référence de localisation des points de Gauss
dans le paramètre <locname>. Cette élément de référence
décrit la localisation des points de Gauss pour une entité
<typent>, <typgeo> de référence. Le type
géométrique utilisé à la définition
de la localisation est le même que le
paramètre <typgeo> passé à
la routine MEDchampLire/efchal.
- Les
valeurs (scalaires, vectorielles) aux points de Gauss d'une
entité sont contigües (quel que soit le mode
d'entrelacement). Dans le cas d' un
champ à plus d'une composante, le mode
d'entrelacement <modswt> s'applique à la valeur en
chaque point de Gauss comme dans le cas d'une valeur (vectorielle) sur
une
entité classique.
- La taille de <val> retournée par
la routine MEDnVal/efnval prendre en compte le
nombre de points de gauss utilisé.
- Il
est possible d'avoir une localisation des points de Gauss avec les
deux types de sélection définies
précédement.
- Si le champ ne porte pas sur les points de Gauss,
la valeur MED_NOGAUSS est retournée dans
le paramètre <locname>.
Précisions supplémentaires sur les paramètres :
- modswt (IN) : MED_FULL_INTERLACE ou MED_NO_INTERLACE.
- locname (OUT) : nom de la localisation de taille MED_TAILLE_NOM,
MED_NOGAUSS sinon.
- numco (IN) : numéro de composante à
sélectionner pour la lecture s'il y a lieu,
MED_ALL sinon..
- profil (OUT) : nom du profil utilisé s'il y a
lieu, MED_NOPFL sinon.
- pflmod (IN) : {MED_NO_PFLMOD,MED_COMPACT,MED_GLOBAL}.
- typent (IN) : type d'entité sur lequel porte les
résultats, soit MED_NOEUD, MED_MAILLE, MED_FACE ou MED_ARETE.
- typgeo (IN) : type géométrique de
l'entité s'il y a lieu :
- 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.
- numdt (IN) : numéro du pas de temps s'il y a
lieu, MED_NOPDT sinon.
- numo (IN) : numéro d'ordre s'il y a lieu,
MED_NONOR sinon.
- Nom : MEDchampRefInfo
- Signature :
med_err MEDchampRefInfo(med_idt fid,char *cha,
med_entite_maillage typent, med_geometrie_element typgeo,
int indice, med_int numdt, med_int numo,
char * maa, med_booleen * local, med_int *ngauss)
- Paramètres :
- fid (IN) : descripteur du fichier.
- cha (IN) : nom du champ où lire les valeurs.
- typent (IN) : type d'entité sur lequel porte
les résultats.
- typgeo (IN) : type géométrique de
l'entité s'il y a lieu.
- indice (IN) : indice du pas de temps dans le champ.
- numdt (IN) : numéro du pas de temps s'il y a
lieu.
- numo (IN) : numéro d'ordre s'il y a lieu.
- maa (OUT) : maillage associé.
- local (OUT) : maillage local (MED_VRAI) ou distant (MED_FAUX).
- ngauss (OUT) : nombre de points de Gauss.
- Code retourné : 0 si réussite, -1 sinon.
- Nom : efrefi
- Signature :
subroutine efrefi(fid, cha, typent, typgeo, indice, numdt, numo,
1 maa, local, ngauss, cret)
integer fid,typent,typgeo,indice,cret
integer numdt, numo, ngauss
character *(*) cha, maa
logical local
integer edfrefi
- Paramètres :
Idem C +
- cret (OUT) : code de retour, 0 si réussite,
-1 sinon.
Description
La routine MEDchampRefInfo/efrefi permet d'identifier
un maillage référencé dans une séquence de calcul.
Les données lues sont :
- Le nom du maillage.
- Sa localisation (locale ou non).
- Le nombre de points de Gauss.
Remarques
- La routine MEDnChampref/efnref fournit le nombre
de maillages associés à une séquence de calcul. On peut alors
itérer sur ces maillages pour les identifier avec la routine
MEDchampRefInfo/efrefi.
- Apport fonctionnel de MED-fichier V2.2 :
Possibilité de référencer plusieurs maillages dans une séquence de calcul.
- Nom : efliee
- Signature :
subroutine efliee(fid,lienval,maa,cret)
integer fid,cret
character *(*) lienval, maa
- Paramètres :
- Idem C +
- cret (OUT) : code de retour, 0 si réussite,
-1 sinon.
Description
Cette routine permet de référencer le
fichier <lienval> comme étant celui qui porte le maillage
<maa>.
Remarques
- Un maillage <maa> ne peut pas être à la fois distant et local.
- La nature de la localisation des maillages référencés dans un champ est fournie par
les routines :
- MEDpasdetempsInfo/efpdti
pour le maillage par défaut.
- MEDchampRefInfo/efrefi pour
un maillage quelconque d'une séquence de calcul.
- Apport fonctionnel de MED-fichier V2.2 :
Possibilité de stocker les champs et les fichiers dans des fichiers différents.
- Nom : efnlie
- Signature :
subroutine efnlie(fid,n,cret)
integer fid,n,cret
- Paramètres :
- Idem C +
- n (OUT) : nombre de liens, eventuellement nul
- cret (OUT) : code de retour, 0 si réussite,
-1 sinon.
Description
Cette routine renvoie le nombre de lien sur fichier distant dans un fichier.
Remarques
- Ce nombre peut être égal à 0.
- Apport fonctionnel de MED-fichier V2.2 :
Possibilité de stocker les champs et les fichiers dans des fichiers différents.
- Nom : efliei
- Signature :
subroutine efliei(fid,indice,maa,n,cret)
character *(*) maa
integer fid,indice,n,cret
- Paramètres :
- Idem C +
- cret (OUT) : code de retour, 0 si réussite,
-1 sinon.
Description
Cette routine lit les informations sur un lien sur fichier distant.
Les informations lues sont :
- Le nom du lien qui correspond au nom d'un maillage référencé dans
une séquence de calcul.
- La taille de la chaîne de caractère à allouer pour lire ce lien.
Remarques
- Cette routine est utile pour lire l'ensemble
des liens contenus dans un fichier.
- Apport fonctionnel de MED-fichier V2.2 :
Possibilité de stocker les champs et les fichiers dans des fichiers différents.
- Nom : efnvli
- Signature :
subroutine efnvli(fid,maa,n,cret)
character *(*) maa
integer fid,n,cret
- Paramètres :
- Idem C +
- n (OUT) : taille du lien, eventuellement nul si réussite
- cret (OUT) : code de retour, 0 si réussite,
-1 sinon.
Description
Cette routine permet de connaître la taille du lien associée au maillage distant <maa>.
Remarques
- Apport fonctionnel de MED-fichier V2.2 :
Possibilité de stocker les champs et les fichiers dans des fichiers différents.
- Nom : efliel
- Signature :
subroutine efliel(fid,lienval,n,maa,cret)
character *(*) maa,lienval
integer fid,n,cret
- Paramètres :
- Idem C +
- n (IN) : taille du lien
- cret (OUT) : code de retour, 0 si réussite,
-1 sinon.
Description
Permet de lire le lien <lienval> associé au maillage distant
<maa>.
Remarques
- Une fois <lienval> connu, il est possible de monter le fichier distant
en utilisant les routines de montage/démontage de fichier distant :
- MEDmonter/efmont.
- MEDdemonter/efdemo.
- Apport fonctionnel de MED-fichier V2.2 :
Possibilité de stocker les champs et les fichiers dans des fichiers différents.