title: Extensible data model and format
text: # Extensible data model and format
  
  Le sigle XDMF signifie eXtensible Data Model and Format. Le XDMF est un format de données développé pour le calcul à haute performance (HPC), et en particulier en tant que format d'échange pour permettre l'affichage des données par des logiciels dédiés comme ParaView, VisIt et EnSight. Ce format est conçu pour représenter des champs scalaires, vectoriels ou tensoriels, décrits de manière discrète : les valeurs sont définies en des points données d'une « grille » (grid), d'un réseau, d'un maillage structuré ou non de l'espace, en prenant en compte une éventuelle évolution temporelle. Ce sont donc des données du type
  
      ƒ(x, y, z, t)
  
  où ƒ est une fonction scalaire, vectorielle ou tensorielle.
  
  Le format XDMF distingue deux types de données :
  
  * les données « légères » (light data), qui regroupe la description des données numériques, comme le type de données (entiers, décimal codé en virgule flottante…), la dimension de l'ensemble (taille de la matrice ou de l'hypermatrice)… ; ces données légères sont au format XML ;
  * les données « lourdes » (heavy data), qui sont les valeurs numériques elles-mêmes ; elles sont en général au format HDF5.
  
  Le format des données (les données légères) est stocké de manière redondante sous forme XML et dans le format HDF5, mais le fait d'avoir les données légères au format XML, donc stocké sous forme « facilement lisible » — format texte (ASCII, Unicode), ne nécessitant pas de recourir à une bibliothèque logicielle HDF5 — permet d'effectuer rapidement des opérations simples. En particulier, en lisant les données légères, les logiciels peuvent optimiser la manière dont vont être lues les données lourdes. Cette séparation permet également aux logiciels de calcul d'enregistrer les données sous une forme optimisée pour l'algorithme (au format HDF5), sans avoir à les réarranger pour l'affichage (les informations permettant l'affichage étant dans le descriptif au format XML), et donc sans altérer la performance.
  
  