A new I/O file format

From Einstein Toolkit Documentation
Revision as of 13:57, 6 October 2015 by Eschnett (talk | contribs)
(diff) ←Older revision | Current revision (diff) | Newer revision→ (diff)
Jump to: navigation, search

Thoughts on a rather generic AMR I/O file format and library

(That would be useful for the Einstein Toolkit and related projects)

General Thoughts

Uses

  • generic file I/O, i.e. exporting/importing data
  • checkpointing, recovery
  • visualization
  • post-processing
  • long-term archival

Necessary Properties

  • needs to be based on HDF5, or an equivalent portrable, widely-supported file format
  • needs to support efficient parallel I/O (including quick discovery of file contents, quick reading of individual datasets)
  • needs to be portable
  • should be useful for similar projects, e.g. Enzo
  • must support unigrid, AMR, multi-block, DGFE, staggered grids
  • must be usable from C, C++, Fortran, Python, Mathematica
  • should be implemented in a portable stand-alone library that can easily be used in various projects
  • must remain accessible without such a library

Ideas

We introduce various concepts that abstract various properties. Data are described in terms of these concepts instead of using ad-hoc descriptions for datasets.

It seems useful that each concept has abstract properties and several concrete realizations.

Concepts:

  • project (consisting of simulations)
  • manifold (consisting of discretizations)
  • coordinate systems (various types)
  • tangent spaces (what is the connection to a coordinate system?)
  • tensors (described via bases) (should bases be related to tangent spaces?)
  • generic variable types (such as "floating"), implemented via concrete types (such as float32, float64)
  • fields, as defined by the user

Names should be illustrative only and don't matter; only the connection between these concepts are relevant.