/*! \mainpage H5hut: A High-Performance I/O Library for Particle-based Simulations Particle-based simulations running on large high-performance computing systems over many time steps can generate an enormous amount of particle- and field-based data for post-processing and analysis. Achieving high-performance I/O for this data, effectively managing it on disk, and interfacing it with analysis and visualization tools can be challenging, especially for domain scientists who do not have I/O and data management expertise. We present the H5hut library, an implementation of several data models for particle-based simulations that encapsulates the complexity of HDF5 and is simple to use, yet does not compromise performance. Developers: Previous developers: For more information, please contact the h5part mailing list. \defgroup c_api C API @{ \note The C API is implemented with '\c static \c inline' functions to minimize overhead. \defgroup h5_c_api H5 @{ \defgroup h5_file File interface In this section we document the interface for accessing H5hut files. \defgroup h5_model Setting up the data model The fundamental data model of H5hut is pretty simple. There are (time-)steps to group data, that's it. In this section we document the interface to these (time-)steps. \defgroup h5_file_attribs File attributes interface File attributes are small datasets that can be used to describe specific properties of a file. The H5hut API provides functions to attach (write), read and inquire file attributes. \defgroup h5_step_attribs Step attributes interface Step attributes are similar to file attributes but are attached to (time-)steps. They can be used to describe specific properties of a specific step. The H5hut API provides functions to attach (write), read and inquire step attributes. \defgroup h5_attach Attaching files Sometimes it is required (or at least useful) to attach additional information to H5hut files. H5hut provides functions to attach other files to H5hut files. The attached files can be of any type. \defgroup h5_log Controlling verbosity level Controlling the verbosity level of H5hut. By default only error messages are printed. For debugging it might be helpful to increase the verbosity level. \defgroup h5_debug Controlling debug output Debug output mainly intended for developers. \defgroup h5_error Error handling interface H5hut comes with two error handler. The default error handler prints an error message (which can be suppressed by setting the verbosity level to \c 0), sets an internal error number and returns to the calling program with the value \c H5_FAILURE. It is up to the programmer to handle the error properly. In certain use-cases it make sense just to abort the program, so no additional error handling is needed. H5hut provides an abort error-handler for this use-cases- @} \defgroup h5part_c_api H5Part @{ \defgroup h5part_model Setting up the data model The H5Part data model interface provides functions to set and inquire (per core) views on datasets. \defgroup h5part_io Dataset interface The dataset interface provides functions to read and write datasets. The following data types are supported: - 64-bit floating point numbers (\c h5_float64_t) - 32-bit floating point numbers (\c h5_float32_t) - 64-bit integers (\c h5_int64_t) - 32-bit integers (\c h5_int32_t) \note Before you can write or read a dataset, you have to define a "view" on the dataset for each core. @} \defgroup h5block_c_api H5Block @{ \defgroup h5block_model Setting up the data model The H5Block data model interface provides functions to set and inquire (per core) views on fields. \defgroup h5block_io Interface to block structured data H5Block provides functions to store and retrieve - 3-dimensional fields with scalar values - 3-dimensional fields with 3-dimensional vectors as values The following datatypes are supported: - 64-bit floating point numbers (\c h5_float64_t) - 32-bit floating point numbers (\c h5_float32_t) - 64-bit integers (\c h5_int64_t) - 32-bit integers (\c h5_int32_t) \defgroup h5block_attrib Attaching attributes to field data Field attributes are small datasets that can be used to describe specific properties of a field like origin, spacing or coordinates. The H5hut API provides functions to attach (write), read and inquire file attributes. @} @} */ /*! \defgroup f90_api Fortran90 API @{ \defgroup h5_f90_api H5 @{ \defgroup h5_file_f file interface \defgroup h5_model_f setting up the data model \defgroup h5_file_attribs_f reading and writing file attributes \defgroup h5_step_attribs_f reading and writing step attributes \defgroup h5_log_f control verbosity level \defgroup h5_debug_f control debug output \defgroup h5_error_f error handling interface @} \defgroup h5part_f90_api H5Part @{ \defgroup h5part_model_f setting up the data model \defgroup h5part_io_f reading and writing datasets @} \defgroup h5block_f90_api H5Block @{ \defgroup h5block_model_f setting up the data model \defgroup h5block_io_f reading and writing datasets \defgroup h5block_attrib_f reading and writing attributes @} @} */