d9.02.04 Description du stockage JEVEUX au format HDF#
Résumé:
On décrit ici l’organisation du fichier HDF adoptée pour stocker le contenu d’une base JEVEUX. Ce fichier contient une image de l’ensemble des objets JEVEUX créés sur la base Globale au moment de la sauvegarde et peut être utilisé pour lancer une exécution en poursuite sur la plate-forme d’exécution initiale ou bien tout autre plate-forme compatible et disposant de la version portée de Code_Aster .
Écriture des objets simples JEVEUX#
Les objets simples JEVEUX sont en général de type homogène, ils sont stockés dans un «dataset» portant le nom de l’objet simple au niveau du «group» /. Les objets simples de genre répertoire de noms contiennent à la fois une table de h-coding de type INTEGER et la liste des noms stockés de type CHARACTER et doivent être traités à part. Ils sont scindés pour stocker deux «datasets» de noms respectifs T_HCOD et T_NOM au niveau d’un group portant le nom de l’objet simple au niveau du «group» /.
On associe une liste nommée “ATTRIBUTS JEVEUX” de 5 attributs à tous les «datasets » associés aux objets simples et à tous les groupes associés aux répertoires de noms contenant respectivement:
un texte(“OBJET SIMPLE”),
un identificateur(identificateur d’objet simple JEVEUX),
une chaîne contenant la classe, le genre et le type au sens JEVEUX ( argument de JECREO ),
le type Fortan associé,
une chaîne vide
Les objets systèmes JEVEUX contiennent toutes les informations de type attribut JEVEUX et permettent de reconstruire les structure de données associées. Ils ne diffèrent des objets simples JEVEUX, accessibles à l’utilisateur, que par leur nom, ils sont traités de la même façon. Les objets systèmes sont de type homogène et ne posent donc pas de problème particulier de stockage. On stocke chaque objet JEVEUX dans un «dataset» portant le nom de l’objet système au niveau du «group» /.
On associe une liste nommée “ATTRIBUTS JEVEUX” de 5 attributs à tous les «datasets » associés aux objets système contenant respectivement:
un texte(“OBJET SYSTEME”),
un identificateur(identificateur d’objet simple JEVEUX),
une chaîne contenant la classe, le genre et le type au sens JEVEUX,
le type Fortan associé,
une chaîne vide
Les attributs associés aux «dataset» ou aux «groups» seront utilisés lors de la relecture du fichier HDF pour reconstruire les structures de données associées aux objets JEVEUX.
Écriture des collections JEVEUX#
Collections contiguës#
Les collections contiguës sont construites à partir d’objets simples, il est donc faciles d’utiliser les méthodes associées aux objets simples pour stocker ces dernières. Les objets de collection contiguë sont stockés dans le segment de valeurs associé à l’objet système $$DESO.
L’objet simple descripteur de collection est stocké dans un «dataset» portant le nom de la collection sous le «group» /.
On associe une liste nommée “ATTRIBUTS JEVEUX” de 5 attributs au «dataset » associé contenant respectivement:
un texte(“COLLECTION”),
un identificateur(identificateur d’objet simple JEVEUX),
une chaîne contenant la classe, le genre (X) et le type au sens JEVEUX (I),
le type Fortan associé,
une chaîne vide.
Les objets système de collection sont stockés dans des «datasets» portant le nom de chaque objet système de collection sous le «group» /.
On associe une liste nommée “ATTRIBUTS JEVEUX” de 5 attributs au «dataset » associé contenant respectivement:
un texte(“OBJ. SYSTEME COLLECTION”),
un identificateur(identificateur d’objet simple JEVEUX),
une chaîne contenant la classe, le genre et le type au sens JEVEUX,
le type Fortan associé,
une chaîne vide.
Collections dispersées#
Les collections dispersées sont construites à partir d’objets simples pour les objets systèmes de collection et de segment de valeurs associés à chaque objet de collection. Les objets systèmes sont stockés de la même façon que pour les collection contigues. L’objet système $$DESO est particulier car il n’est pas associé dans le cas des collections dispersées à un segment de valeurs, il n’y a donc pas de «dataset» associé, et c’est uniquement en chargeant le contenu des objets sytèmes JEVEUX que la collection dispersée est reconstruite lors de la relecture du fichier HDF.
Un «group» portant le nom de la collection complété par __OBJETS est créé au niveau du «group» / pour écrire les objets de collection dispersée. On associe une liste nommée “ATTRIBUTS JEVEUX” de 5 attributs au «group», seul le premier élément est non vide et contient un texte (COLLECTION).
Chaque objet de collection est ensuite écrit dans un «dataset» portant le nom de la collection complété par le numéro de l’objet de collection (y compris pour les collections nommées) sous le«group» décrit ci-dessus.
On associe une liste nommée “ATTRIBUTS JEVEUX” de 5 attributs au «dataset » associé contenant respectivement:
un texte(OBJET DE COLLECTION),
le nom ou le numéro de l’objet de collection et l’identificateur de collection,
une chaîne contenant la classe, le genre et le type au sens JEVEUX,
le type Fortan associé,
une chaîne vide.
Entête du fichier#
On stocke une liste nommée “BASE GLOBALE JEVEUX” de 5 attributs associé au «group « / contenant respectivement:
un texteidentifiant la version de Code_Aster utilisée pour construire le fichier,
le nom du serveur de calcul utilisé,
le nom du système sur le serveur,
la date d’exécution du code,
3 caractéristiques machine (longueur en bits de l’entier standard, longueur en octets de l’entier standard, longueur en octets de l’unité d’adressage).
La première information est utilisée lors de la relecture pour éventuellement émettre une alarme lorsque la version de Code_Aster utilisée diffère. Certaines structures de données ou catalogues peuvent se révéler incompatibles.
Exemple de fichier#
Voici un exemple de fichier HDF obtenu à partir de l’exécution du test TTLL01A et dont la représentation ASCII est issue de l’utilitaire h5dump. On ne donne ici que quelques extraits illustrant les descriptions des principaux objets JEVEUX.
HDF5 "resu64.hdf" {
GROUP "/" {
ATTRIBUTE "BASE GLOBALE JEVEUX" {
DATATYPE H5T_STRING {
STRSIZE 24;
STRPAD H5T_STR_SPACEPAD;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SIMPLE { ( 5 ) / ( 5 ) }
DATA {
"13/08/2003 7. 1.13", "CLA4ASTR.CLA.EDF ",
"OSF1 ", "MA-19-AOUT-2003 10:35:24",
"LBIS=64 LOIS= 8 LOUA= 1 "
}
}
DATASET "&&SYS .CODE" {
DATATYPE H5T_STRING {
STRSIZE 8;
STRPAD H5T_STR_SPACEPAD;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SIMPLE { ( 3 ) / ( 3 ) }
DATA {
"TTLL01A ", " 15", " 95"
}
ATTRIBUTE "ATTRIBUTS JEVEUX" {
DATATYPE H5T_STRING {
STRSIZE 24;
STRPAD H5T_STR_SPACEPAD;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SIMPLE { ( 5 ) / ( 5 ) }
DATA {
"OBJET SIMPLE ", " 30",
"G V K8 ", "CHARACTER*8 ",
" "
}
}
}
…
GROUP "TEMPE .DESC" {
ATTRIBUTE "ATTRIBUTS JEVEUX" {
DATATYPE H5T_STRING {
STRSIZE 24;
STRPAD H5T_STR_SPACEPAD;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SIMPLE { ( 5 ) / ( 5 ) }
DATA {
"OBJET SIMPLE ", " 287",
"G N K16 ", "CHARACTER*16 ",
" "
}
}
DATASET "T_HCOD" {
DATATYPE H5T_STD_I64LE
DATASPACE SIMPLE { ( 43 ) / ( 43 ) }
DATA {
37, 344, 16, 18, 18, 6, 0, 0, 0, 18, 8, 6, 4, 0, 0, 0, 7, 0, 0, 0,
0, 13, 17, 12, 0, 16, 11, 2, 0, 5, 0, 15, 14, 1, 0, 9, 0, 3, 0, 10,
0, 0, 0
}
}
DATASET "T_NOM" {
DATATYPE H5T_STRING {
STRSIZE 16;
STRPAD H5T_STR_SPACEPAD;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SIMPLE { ( 18 ) / ( 18 ) }
DATA {
"TEMP ", "FLUX_ELGA ", "FLUX_ELNO ",
"FLUX_NOEU ", "META_ELGA_TEMP ", "META_ELNO ",
"META_NOEU ", "DURT_ELGA_META ", "DURT_ELNO ",
"DURT_NOEU ", "HYDR_ELGA ", "HYDR_ELNO ",
"HYDR_NOEU ", "DETE_ELNO ", "DETE_NOEU ",
"COMPORTHER ", "ERTH_ELEM_TEMP ", "ERTH_ELNO_ELEM "
}
}
}
DATASET "TEMPE .INST" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( 42 ) / ( 42 ) }
DATA {
0, 0.0001, 0.0002, 0.0003, 0.0004, 0.0005, 0.0006, 0.0007, 0.0008,
0.0009, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.009,
0.01, 0.02, 0.1, 0.2, 0.7, 2, 1.79769e+308, 1.79769e+308, 1.79769e+308,
1.79769e+308, 1.79769e+308, 1.79769e+308, 1.79769e+308, 1.79769e+308,
1.79769e+308, 1.79769e+308, 1.79769e+308, 1.79769e+308, 1.79769e+308,
1.79769e+308, 1.79769e+308, 1.79769e+308, 1.79769e+308
}
ATTRIBUTE "ATTRIBUTS JEVEUX" {
DATATYPE H5T_STRING {
STRSIZE 24;
STRPAD H5T_STR_SPACEPAD;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SIMPLE { ( 5 ) / ( 5 ) }
DATA {
"OBJET SIMPLE ", " 293",
"G V R ", "REAL*8 ",
" "
}
}
}
…