Efficient and convenient I/O for large PDE simulations
This repository contains a working prototype of a library that can be
used to write and read simulation output, as would be necessary e.g. for
the Cactus framework. There are substantially complete test cases, a
simple example, an h5ls
like utility, and a converter from the
current Cactus format.
This repository contains a few sketches describing brainstorming results
in various forms in the subdirectory sketches
: -
AMR IO Library.md
: Original document -
simulations.{gliffy,svg,png}
: Graphical representation -
SimulationIO.hpp
: Description as C++ header file -
SimulationIO.jl
: Begin of an implementation in Julia
- Add a UUID to every object
- can’t just create UUIDs
- probably need to handle set of UUIDs?
- Run benchmarks with large datasets
- Add parallelism
- Add sub-manifolds, sub-tangentspaces, etc.
- Allow writing just part of a project, or adding to / modifying a project
- idea: whenever creating an HDF5 object, check whether it already exists; if so, check whether it looks as expected
- Allow removing parts of a project, deleting it from a file?
- Implement (value) equality comparison operators for our objects
- Replace H5 SWIG interface with standard Python HDF5 library. To do this, obtain low-level HDF5 ids from Python, and create H5 objects from these.
- Allow coordinates that are not fields, but are e.g. uniform, or uniform per dimension
- Create
Data
class by splitting off fromDiscreteFieldBlockComponent
- Create
Value
class by splitting off fromParameterValue
? Unify this withData
? - Range field should use a dataset instead of an attribute
- In discrete manifold, distinguish between vertex, cell, and other centerings
- Introduce min/max for discrete fields? For scalars only? Keep array for other tensor types, indexed by stored component? How are missing data indicated? nan?
- Create DataSpace from vector
- Implement SILO writer (for VisIt) (or can this be a SILO wrapper?)
- Measure performance of RegionCalculus
- Set of parent manifolds ### Sub-Discretizations
- Set of parent discretizations
- If directions aligned:
- Map directions: int[sum-dim] -> [0..dim-1]
- Needs to handle points, lines, planes
- If commensurate:
- Grid spacing ratio (rational)
- Offset (rational)