XDMF¶
A set of classes and functions to write/read data to/from xdmf + hdf5 files format.
-
VertexChannelsData
mirheo::XDMF
::
readVertexData
(const std::string &filename, MPI_Comm comm, int chunkSize)¶ Read particle data from a pair of xmf+hdf5 files.
- Return
- The read data (on the local rank)
- Parameters
filename
: the xdmf file name (with extension)comm
: The communicator used in the I/O processchunkSize
: The smallest piece that processors can split
Grids¶
mirheo::XDMF::Grid
objects are used to represent the geometry of the data that will be dumped.
Interface¶
-
class
GridDims
¶ Interface to represent the dimensions of the geometry data.
Subclassed by mirheo::XDMF::VertexGrid::VertexGridDims
Public Functions
-
virtual std::vector<hsize_t>
getLocalSize
() const = 0¶ number of elements in the current subdomain
-
virtual std::vector<hsize_t>
getGlobalSize
() const = 0¶ number of elements in the whole domain
-
virtual std::vector<hsize_t>
getOffsets
() const = 0¶ start indices in the current subdomain
-
bool
localEmpty
() const¶ - Return
true
if there is no data in the current subdomain
-
bool
globalEmpty
() const¶ - Return
true
if there is no data in the whole domain
-
int
getDims
() const¶ - Return
- The current dimension of the data (e.g. 3D for uniform grids, 1D for particles)
-
virtual std::vector<hsize_t>
-
class
Grid
¶ Interface to represent The geometry of channels to dump.
Subclassed by mirheo::XDMF::UniformGrid, mirheo::XDMF::VertexGrid
Public Functions
-
virtual const GridDims *
getGridDims
() const = 0¶ - Return
- the GridDims that describes the data dimensions
-
virtual std::string
getCentering
() const = 0¶ - Return
- A string describing (for XDMF) data location (e.g. “Node” or “Cell”)
-
virtual void
writeToHDF5
(hid_t file_id, MPI_Comm comm) const = 0¶ Dump the geometry description to hdf5 file.
- Parameters
file_id
: The hdf5 file descriptioncomm
: MPI communicator that was used to open the file
-
virtual pugi::xml_node
writeToXMF
(pugi::xml_node node, std::string h5filename) const = 0¶ Dump the geometry description to xdmf file.
- Parameters
node
: The xml node that will store the geometry informationh5filename
: name of the hdf5 file that will contain the data
-
virtual void
readFromXMF
(const pugi::xml_node &node, std::string &h5filename) = 0¶ read the geometry info contained in the xdmf file
- Note
- must be called before splitReadAccess()
- Parameters
node
: The xmf datah5filename
: The name of the associated hdf5 file
-
virtual void
splitReadAccess
(MPI_Comm comm, int chunkSize = 1) = 0¶ Set the number of elements to read for the current subdomain.
- Note
- must be called after readFromXMF()
- Parameters
comm
: Communicator that will be used to read the hdf5 filechunkSize
: For particles, this affects the number of particles to keep together on a single rank. Useful for objects.
-
virtual void
readFromHDF5
(hid_t file_id, MPI_Comm comm) = 0¶ Read the geometry data contained in the hdf5 file.
- Note
- must be called after splitReadAccess()
- Parameters
file_id
: The hdf5 file referencecomm
: MPI communicator used in the I/O
-
virtual const GridDims *
Implementation¶
-
class
UniformGrid
: public mirheo::XDMF::Grid¶ Representation of a uniform grid geometry.
Each subdomain has the same number of grid points in every direction.
Public Functions
-
UniformGrid
(int3 localSize, real3 h, MPI_Comm cartComm)¶ construct a UniformGrid object
- Note
- all these parameters must be the same on every rank
- Parameters
localSize
: The dimensions of the grid per rankh
: grid spacingcartComm
: The cartesian communicator that will be used for I/O
-
std::string
getCentering
() const¶ - Return
- A string describing (for XDMF) data location (e.g. “Node” or “Cell”)
-
void
writeToHDF5
(hid_t file_id, MPI_Comm comm) const¶ Dump the geometry description to hdf5 file.
- Parameters
file_id
: The hdf5 file descriptioncomm
: MPI communicator that was used to open the file
-
pugi::xml_node
writeToXMF
(pugi::xml_node node, std::string h5filename) const¶ Dump the geometry description to xdmf file.
- Parameters
node
: The xml node that will store the geometry informationh5filename
: name of the hdf5 file that will contain the data
-
void
readFromXMF
(const pugi::xml_node &node, std::string &h5filename)¶ read the geometry info contained in the xdmf file
- Note
- must be called before splitReadAccess()
- Parameters
node
: The xmf datah5filename
: The name of the associated hdf5 file
-
void
splitReadAccess
(MPI_Comm comm, int chunkSize = 1)¶ Set the number of elements to read for the current subdomain.
- Note
- must be called after readFromXMF()
- Parameters
comm
: Communicator that will be used to read the hdf5 filechunkSize
: For particles, this affects the number of particles to keep together on a single rank. Useful for objects.
-
void
readFromHDF5
(hid_t file_id, MPI_Comm comm)¶ Read the geometry data contained in the hdf5 file.
- Note
- must be called after splitReadAccess()
- Parameters
file_id
: The hdf5 file referencecomm
: MPI communicator used in the I/O
-
-
class
VertexGrid
: public mirheo::XDMF::Grid¶ Representation of particles geometry.
Each rank contains the positions of the particles in GLOBAL coordinates.
Subclassed by mirheo::XDMF::PolylineMeshGrid, mirheo::XDMF::TriangleMeshGrid
Public Functions
Construct a VertexGrid object.
- Note
- The
positions
are passed as a shared pointer so that this class is able to either allocate its own memory or can share it with someone else - Parameters
positions
: The positions of the particles in the current subdomain, in global coordinatescomm
: The communicator that will be used for I/O
-
std::string
getCentering
() const¶ - Return
- A string describing (for XDMF) data location (e.g. “Node” or “Cell”)
-
void
writeToHDF5
(hid_t file_id, MPI_Comm comm) const¶ Dump the geometry description to hdf5 file.
- Parameters
file_id
: The hdf5 file descriptioncomm
: MPI communicator that was used to open the file
-
pugi::xml_node
writeToXMF
(pugi::xml_node node, std::string h5filename) const¶ Dump the geometry description to xdmf file.
- Parameters
node
: The xml node that will store the geometry informationh5filename
: name of the hdf5 file that will contain the data
-
void
readFromXMF
(const pugi::xml_node &node, std::string &h5filename)¶ read the geometry info contained in the xdmf file
- Note
- must be called before splitReadAccess()
- Parameters
node
: The xmf datah5filename
: The name of the associated hdf5 file
-
void
splitReadAccess
(MPI_Comm comm, int chunkSize = 1)¶ Set the number of elements to read for the current subdomain.
- Note
- must be called after readFromXMF()
- Parameters
comm
: Communicator that will be used to read the hdf5 filechunkSize
: For particles, this affects the number of particles to keep together on a single rank. Useful for objects.
-
void
readFromHDF5
(hid_t file_id, MPI_Comm comm)¶ Read the geometry data contained in the hdf5 file.
- Note
- must be called after splitReadAccess()
- Parameters
file_id
: The hdf5 file referencecomm
: MPI communicator used in the I/O
-
class
TriangleMeshGrid
: public mirheo::XDMF::VertexGrid¶ Representation of triangle mesh geometry.
This is a VertexGrid associated with the additional connectivity (list of triangle faces). The vertices are stored in global coordinates and the connectivity also stores indices in global coordinates.
Public Functions
Construct a TriangleMeshGrid object.
- Parameters
positions
: The positions of the particles in the current subdomain, in global coordinatestriangles
: The list of faces in the current subdomain (global indices)comm
: The communicator that will be used for I/O
-
void
writeToHDF5
(hid_t file_id, MPI_Comm comm) const¶ Dump the geometry description to hdf5 file.
- Parameters
file_id
: The hdf5 file descriptioncomm
: MPI communicator that was used to open the file
Channel¶
-
namespace
mirheo
¶ Common namespace for all Mirheo code.
Copyright 1993-2013 NVIDIA Corporation.
All rights reserved.q
Please refer to the NVIDIA end user license agreement (EULA) associated with this source code for terms and conditions that govern your use of this software. Any use, reproduction, disclosure, or distribution of this software and related documentation outside the terms of the EULA is strictly prohibited.
-
namespace
XDMF
¶ namespace for all functions related to I/O with XDMF + hdf5
Functions
-
std::string
dataFormToXDMFAttribute
(Channel::DataForm dataForm)¶ - Return
- the xdmf-compatible string that describes the Channel::DataForm
-
int
dataFormToNcomponents
(Channel::DataForm dataForm)¶ - Return
- the number of components in the Channel::DataForm
-
std::string
dataFormToDescription
(Channel::DataForm dataForm)¶ - Return
- a unique string that describes the Channel::DataForm (two different may map to the same xdmf attribute)
-
Channel::DataForm
descriptionToDataForm
(const std::string &str)¶ reverse of dataFormToDescription()
-
decltype(H5T_NATIVE_FLOAT)
numberTypeToHDF5type
(Channel::NumberType nt)¶ - Return
- the HDF5-compatible description of the given Channel::NumberType data type
-
std::string
numberTypeToString
(Channel::NumberType nt)¶ - Return
- the xdmf-compatible string corresponding to the given Channel::NumberType data type
-
int
numberTypeToPrecision
(Channel::NumberType nt)¶ - Return
- the size in bytes of the type represented by the given Channel::NumberType data type
-
Channel::NumberType
infoToNumberType
(const std::string &str, int precision)¶ reverse of numberTypeToString() and numberTypeToPrecision()
-
struct
Channel
¶ - #include <channel.h>
Describes one array of data to be dumped or read.
Public Types
-
using
DataForm
= std::variant<Scalar, Vector, Tensor6, Tensor9, Quaternion, Triangle, Vector4, RigidMotion, Polyline, Other>¶ The topology of one element in the channel.
Public Functions
-
int
nComponents
() const¶ Number of component in each element (e.g. Vector has 3)
-
int
precision
() const¶ Number of bytes of each component in one element.
Public Members
-
std::string
name
¶ Name of the channel.
-
void *
data
¶ pointer to the data that needs to be dumped
-
NumberType
numberType
¶ data type (enum version)
-
TypeDescriptor
type
¶ data type (variant version)
-
using
-
std::string
-
namespace