35 #include <boost/core/ignore_unused.hpp>
46 namespace LibUtilities
75 m_Id = H5I_INVALID_HID;
181 H5_CALL(H5Pset_chunk, (
m_Id, dims.size(), &dims[0]));
187 #ifdef NEKTAR_USE_MPI
190 H5_CALL(H5Pset_dxpl_mpio, (
m_Id, H5FD_MPIO_COLLECTIVE));
194 H5_CALL(H5Pset_dxpl_mpio, (
m_Id, H5FD_MPIO_INDEPENDENT));
199 ASSERTL0(mpi_comm,
"Can't convert communicator to MPI communicator.")
201 MPI_Info info = MPI_INFO_NULL;
202 H5_CALL(H5Pset_fapl_mpio, (
m_Id, mpi_comm->GetComm(), info));
207 ASSERTL0(
false,
"Trying to use parallel HDF5 without MPI!");
211 ASSERTL0(
false,
"Trying to use parallel HDF5 without MPI!");
215 ASSERTL0(
false,
"Trying to use parallel HDF5 without MPI!");
225 createPL->GetId(), accessPL->GetId()));
238 (
m_Id,
name.c_str(), type->GetId(), space->GetId(),
239 H5P_DEFAULT, createPL->GetId(), accessPL->GetId()));
269 for(
auto it = begin(); it != end(); ++it)
271 if(it.GetName() == nm)
283 std::dynamic_pointer_cast<CanHaveGroupsDataSets>(shared_from_this());
291 std::dynamic_pointer_cast<CanHaveGroupsDataSets>(shared_from_this());
297 : m_grp(grp), m_idx(-1), m_next(idx), m_size(grp->GetNumElements())
304 return m_currentName;
312 H5_CALL(H5Literate, (m_grp->GetId(), H5_INDEX_NAME, H5_ITER_NATIVE,
320 return (m_grp == other.
m_grp && m_idx == other.
m_idx);
323 const H5L_info_t * info,
326 boost::ignore_unused(g_id, info);
349 return info.num_attrs;
356 std::dynamic_pointer_cast<CanHaveAttributes>(shared_from_this());
363 std::dynamic_pointer_cast<CanHaveAttributes>(shared_from_this());
369 : m_obj(obj), m_idx(-1), m_next(idx), m_size(obj->GetNumAttr())
376 return m_currentName;
383 H5_CALL(H5Aiterate2, (m_obj->GetId(), H5_INDEX_CRT_ORDER, H5_ITER_INC,
391 return m_obj == other.
m_obj && m_idx == other.
m_idx;
395 const H5A_info_t * info,
398 boost::ignore_unused(g_id, info);
421 H5_CONSTRUCT(ans->m_Id, H5Screate_simple, (1, &size, NULL));
435 int rank = dims.size();
441 const hsize_t *max_p = NULL;
442 if (max != (H5S_UNLIMITED - 1))
448 const std::vector<hsize_t> &max_dims)
451 int rank = dims.size();
463 m_Id = H5I_INVALID_HID;
468 (
m_Id, H5S_SELECT_SET, &start, NULL, &count, NULL));
473 (
m_Id, H5S_SELECT_OR, &start, NULL, &count, NULL));
476 const std::vector<hsize_t> count)
479 (
m_Id, H5S_SELECT_SET, &start[0], NULL, &count[0], NULL));
482 const std::vector<hsize_t> count)
485 (
m_Id, H5S_SELECT_OR, &start[0], NULL, &count[0], NULL));
488 const std::vector<hsize_t> &coords)
497 (
m_Id, H5S_SELECT_SET, num_elmt, &coords[0]));
508 return H5Sget_simple_extent_npoints(
m_Id);
513 int ndims = H5Sget_simple_extent_ndims(
m_Id);
514 std::vector<hsize_t> ret(ndims, 0);
515 H5Sget_simple_extent_dims(
m_Id, &ret[0], NULL);
530 H5_CALL(H5Tset_size, (ans->GetId(), len));
537 m_Id = H5I_INVALID_HID;
543 m_Id = H5I_INVALID_HID;
548 hid_t ans_id = H5I_INVALID_HID;
561 return std::shared_ptr<CompoundDataType>(
576 m_Id = H5I_INVALID_HID;
603 space->GetId(), H5P_DEFAULT, H5P_DEFAULT));
621 m_Id = H5I_INVALID_HID;
636 H5_CONSTRUCT(
id, H5Fcreate, (filename.c_str(), mode, createPL->GetId(),
644 H5_CONSTRUCT(
id, H5Fopen, (filename.c_str(), mode, accessPL->GetId()));
650 if (
m_Id != H5I_INVALID_HID)
659 m_Id = H5I_INVALID_HID;
664 return root->GetNumElements();
672 if (
m_Id != H5I_INVALID_HID)
681 m_Id = H5I_INVALID_HID;
693 std::vector<std::string> ret;
697 H5Gget_objname_by_idx(
m_Id, (
size_t)i,
name, 50 );
698 ret.push_back(std::string(
name));
715 m_Id = H5I_INVALID_HID;
#define ASSERTL0(condition, msg)
#define H5_CALL(func, args)
#define H5_CONSTRUCT(ans, func, args)
static AttributeSharedPtr Open(hid_t parent, const std::string &name)
DataSpaceSharedPtr GetSpace() const
static AttributeSharedPtr Create(hid_t parent, const std::string &name, DataTypeSharedPtr type, DataSpaceSharedPtr space)
bool operator==(const AttrIterator &other) const
static herr_t helper(hid_t g_id, const char *name, const H5A_info_t *info, void *op_data)
const std::string & operator*()
AttrIterator(CanHaveAttributesSharedPtr obj, hsize_t idx=0)
CanHaveAttributesSharedPtr m_obj
AttrIterator & operator++()
std::string m_currentName
AttributeSharedPtr OpenAttribute(const std::string &name)
AttrIterator attr_begin()
AttributeSharedPtr CreateAttribute(const std::string &name, DataTypeSharedPtr type, DataSpaceSharedPtr space)
LinkIterator & operator++()
static herr_t helper(hid_t g_id, const char *name, const H5L_info_t *info, void *op_data)
std::string m_currentName
LinkIterator(CanHaveGroupsDataSetsSharedPtr grp, hsize_t idx=0)
bool operator==(const LinkIterator &other) const
CanHaveGroupsDataSetsSharedPtr m_grp
const std::string & operator*()
GroupSharedPtr OpenGroup(const std::string &name, PListSharedPtr accessPL=PList::Default()) const
DataSetSharedPtr OpenDataSet(const std::string &name, PListSharedPtr accessPL=PList::Default()) const
GroupSharedPtr CreateGroup(const std::string &name, PListSharedPtr createPL=PList::Default(), PListSharedPtr accessPL=PList::Default())
DataSetSharedPtr CreateDataSet(const std::string &name, DataTypeSharedPtr type, DataSpaceSharedPtr space, PListSharedPtr createPL=PList::Default(), PListSharedPtr accessPL=PList::Default())
bool ContainsDataSet(std::string nm)
static CompoundDataTypeSharedPtr Create(size_t sz)
DataSpaceSharedPtr GetSpace() const
void SelectRange(const hsize_t start, const hsize_t count)
void AppendRange(const hsize_t start, const hsize_t count)
static DataSpaceSharedPtr Null()
static DataSpaceSharedPtr Scalar()
std::vector< hsize_t > GetDims()
static DataSpaceSharedPtr OneD(hsize_t size)
void SetSelection(const hsize_t num_elmt, const std::vector< hsize_t > &coords)
Wrap and HDF5 data type object. Technically this can have attributes, but not really bothered.
DataTypeSharedPtr Copy() const
static DataTypeSharedPtr String(size_t len=0)
static FileSharedPtr Open(const std::string &filename, unsigned mode, PListSharedPtr accessPL=PList::Default())
static FileSharedPtr Create(const std::string &filename, unsigned mode, PListSharedPtr createPL=PList::Default(), PListSharedPtr accessPL=PList::Default())
virtual hsize_t GetNumElements()
virtual hsize_t GetNumElements()
std::vector< std::string > GetElementNames()
static PListSharedPtr ObjectCreate()
Properties for object creation.
static PListSharedPtr DatasetXfer()
Properties for raw data transfer.
static PListSharedPtr StringCreate()
Properties for character encoding when encoding strings or object names.
static PListSharedPtr FileAccess()
Properties for file access.
void SetDxMpioIndependent()
void SetMpio(CommSharedPtr comm)
void SetDxMpioCollective()
void SetDeflate(const unsigned level=1)
static PListSharedPtr FileCreate()
Properties for file creation.
static PListSharedPtr GroupAccess()
Properties for group access.
static PListSharedPtr DatasetAccess()
Properties for dataset access.
static PListSharedPtr Default()
Default options.
static PListSharedPtr FileMount()
Properties for file mounting.
static PListSharedPtr ObjectCopy()
Properties governing the object copying process.
static PListSharedPtr DatasetCreate()
Properties for dataset creation.
static PListSharedPtr GroupCreate()
Properties for group creation.
void SetChunk(const std::vector< hsize_t > &dims)
static PListSharedPtr AttributeCreate()
Properties for attribute creation.
static PListSharedPtr LinkAccess()
Properties governing link traversal when accessing objects.
static PListSharedPtr LinkCreate()
Properties governing link creation.
static PListSharedPtr DatatypeCreate()
Properties for datatype creation.
static PListSharedPtr DatatypeAccess()
Properties for datatype access.
PredefinedDataType(hid_t)
static DataTypeSharedPtr CS1()
std::shared_ptr< DataSpace > DataSpaceSharedPtr
std::shared_ptr< PList > PListSharedPtr
std::shared_ptr< File > FileSharedPtr
std::shared_ptr< DataType > DataTypeSharedPtr
std::shared_ptr< CanHaveGroupsDataSets > CanHaveGroupsDataSetsSharedPtr
std::shared_ptr< Attribute > AttributeSharedPtr
std::shared_ptr< CompoundDataType > CompoundDataTypeSharedPtr
std::shared_ptr< CanHaveAttributes > CanHaveAttributesSharedPtr
std::shared_ptr< Group > GroupSharedPtr
std::shared_ptr< DataSet > DataSetSharedPtr
std::shared_ptr< CommMpi > CommMpiSharedPtr
Pointer to a Communicator object.
std::shared_ptr< Comm > CommSharedPtr
Pointer to a Communicator object.
The above copyright notice and this permission notice shall be included.
Traits class for HDF5 data types.