Nektar++
Public Member Functions | Protected Member Functions | Private Member Functions | Friends | List of all members
Nektar::LibUtilities::H5::DataSet Class Reference

#include <H5.h>

Inheritance diagram for Nektar::LibUtilities::H5::DataSet:
[legend]

Public Member Functions

 ~DataSet () override
 
DataSpaceSharedPtr GetSpace () const
 
template<class T >
void Write (const std::vector< T > &data)
 
template<class T >
void Write (const std::vector< T > &data, DataSpaceSharedPtr filespace, PListSharedPtr dxpl=PList::Default())
 
template<class T >
void Write (const std::vector< T > &data, DataSpaceSharedPtr filespace, DataTypeSharedPtr dt, PListSharedPtr dxpl=PList::Default())
 
void WriteString (std::string s, DataSpaceSharedPtr filespace, DataTypeSharedPtr type, PListSharedPtr dxpl=PList::Default())
 
void WriteVectorString (std::vector< std::string > s, DataSpaceSharedPtr filespace, DataTypeSharedPtr type, PListSharedPtr dxpl=PList::Default())
 
template<class T >
void Read (std::vector< T > &data)
 
template<class T >
void Read (std::vector< T > &data, DataSpaceSharedPtr filespace, PListSharedPtr dxpl=PList::Default())
 
template<class T >
void Read (std::vector< T > &data, DataSpaceSharedPtr filespace, std::vector< std::vector< int > > &coords, PListSharedPtr dxpl=PList::Default())
 
void ReadVectorString (std::vector< std::string > &data, DataSpaceSharedPtr filespace, PListSharedPtr dxpl=PList::Default())
 
- Public Member Functions inherited from Nektar::LibUtilities::H5::CanHaveAttributes
AttributeSharedPtr CreateAttribute (const std::string &name, DataTypeSharedPtr type, DataSpaceSharedPtr space)
 
AttributeSharedPtr OpenAttribute (const std::string &name)
 
template<class T >
void SetAttribute (const std::string &name, const T &value)
 
template<class T >
void SetAttribute (const std::string &name, const std::vector< T > &value)
 
template<class T >
void GetAttribute (const std::string &name, T &value)
 
template<class T >
void GetAttribute (const std::string &name, std::vector< T > &value)
 
int GetNumAttr () const
 
AttrIterator attr_begin ()
 
AttrIterator attr_end ()
 
- Public Member Functions inherited from Nektar::LibUtilities::H5::Object
void Close ()
 
hid_t GetId () const
 
 operator hid_t () const
 

Protected Member Functions

void v_Close () override
 
- Protected Member Functions inherited from Nektar::LibUtilities::H5::Object
 Object ()
 
 Object (hid_t id)
 
virtual ~Object ()
 
virtual void v_Close ()=0
 

Private Member Functions

 DataSet (hid_t id)
 

Friends

class CanHaveGroupsDataSets
 

Additional Inherited Members

- Protected Attributes inherited from Nektar::LibUtilities::H5::Object
hid_t m_Id
 

Detailed Description

Definition at line 503 of file H5.h.

Constructor & Destructor Documentation

◆ ~DataSet()

Nektar::LibUtilities::H5::DataSet::~DataSet ( )
override

Definition at line 703 of file H5.cpp.

704{
705 Close();
706}

References Nektar::LibUtilities::H5::Object::Close().

◆ DataSet()

Nektar::LibUtilities::H5::DataSet::DataSet ( hid_t  id)
private

Definition at line 699 of file H5.cpp.

699 : Object(id)
700{
701}

Member Function Documentation

◆ GetSpace()

DataSpaceSharedPtr Nektar::LibUtilities::H5::DataSet::GetSpace ( ) const

Definition at line 714 of file H5.cpp.

715{
716 return DataSpaceSharedPtr(new DataSpace(H5Dget_space(m_Id)));
717}
std::shared_ptr< DataSpace > DataSpaceSharedPtr
Definition: H5.h:78

References Nektar::LibUtilities::H5::Object::m_Id.

Referenced by Read().

◆ Read() [1/3]

template<class T >
void Nektar::LibUtilities::H5::DataSet::Read ( std::vector< T > &  data)
inline

Definition at line 558 of file H5.h.

559 {
562 ASSERTL0(H5Sget_simple_extent_ndims(space->GetId()) == 1,
563 "vector data not 1D");
564 hsize_t len, maxdim;
565 H5Sget_simple_extent_dims(space->GetId(), &len, &maxdim);
566
567 data.resize(len);
568
569 H5_CALL(H5Dread, (m_Id, mem_t->GetId(), H5S_ALL, H5S_ALL, H5P_DEFAULT,
570 &data[0]));
571 }
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:208
#define H5_CALL(func, args)
Definition: H5.h:58
DataSpaceSharedPtr GetSpace() const
Definition: H5.cpp:714
std::shared_ptr< DataType > DataTypeSharedPtr
Definition: H5.h:74
static DataTypeSharedPtr GetType()
Definition: H5.h:661

References ASSERTL0, GetSpace(), Nektar::LibUtilities::H5::DataTypeTraits< T >::GetType(), H5_CALL, and Nektar::LibUtilities::H5::Object::m_Id.

◆ Read() [2/3]

template<class T >
void Nektar::LibUtilities::H5::DataSet::Read ( std::vector< T > &  data,
DataSpaceSharedPtr  filespace,
PListSharedPtr  dxpl = PList::Default() 
)
inline

Definition at line 573 of file H5.h.

575 {
577 hsize_t len;
578 len = H5Sget_select_npoints(filespace->GetId());
579
580 data.resize(len);
581
582 DataSpaceSharedPtr memspace = DataSpace::OneD(len);
583 H5_CALL(H5Dread, (m_Id, mem_t->GetId(), memspace->GetId(),
584 filespace->GetId(), dxpl->GetId(), &data[0]));
585 }
static DataSpaceSharedPtr OneD(hsize_t size)
Definition: H5.cpp:411

References Nektar::LibUtilities::H5::DataTypeTraits< T >::GetType(), H5_CALL, Nektar::LibUtilities::H5::Object::m_Id, and Nektar::LibUtilities::H5::DataSpace::OneD().

◆ Read() [3/3]

template<class T >
void Nektar::LibUtilities::H5::DataSet::Read ( std::vector< T > &  data,
DataSpaceSharedPtr  filespace,
std::vector< std::vector< int > > &  coords,
PListSharedPtr  dxpl = PList::Default() 
)
inline

Definition at line 587 of file H5.h.

590 {
592 hsize_t len;
593
594 int w = coords[0].size();
595
596 hsize_t *cds = new hsize_t[coords.size() * w];
597 for (int i = 0; i < coords.size(); i++)
598 {
599 for (int j = 0; j < coords[i].size(); j++)
600 {
601 cds[i * w + j] = hsize_t(coords[i][j]);
602 }
603 }
604
605 H5Sselect_elements(filespace->GetId(), H5S_SELECT_SET, coords.size(),
606 cds);
607
608 delete[] cds;
609
610 len = H5Sget_select_npoints(filespace->GetId());
611 DataSpaceSharedPtr memspace = DataSpace::OneD(len);
612
613 data.resize(len);
614
615 H5_CALL(H5Dread, (m_Id, mem_t->GetId(), memspace->GetId(),
616 filespace->GetId(), dxpl->GetId(), &data[0]));
617
618 H5Sselect_all(filespace->GetId());
619 }
std::vector< double > w(NPUPPER)

References Nektar::LibUtilities::H5::DataTypeTraits< T >::GetType(), H5_CALL, Nektar::LibUtilities::H5::Object::m_Id, Nektar::LibUtilities::H5::DataSpace::OneD(), and Nektar::UnitTests::w().

◆ ReadVectorString()

void Nektar::LibUtilities::H5::DataSet::ReadVectorString ( std::vector< std::string > &  data,
DataSpaceSharedPtr  filespace,
PListSharedPtr  dxpl = PList::Default() 
)
inline

Definition at line 621 of file H5.h.

624 {
625 char **rdata;
627 std::vector<hsize_t> dims = filespace->GetDims();
628 rdata = (char **)malloc(dims[0] * sizeof(char *));
629
630 H5_CALL(H5Dread, (m_Id, tp->GetId(), H5S_ALL, filespace->GetId(),
631 dxpl->GetId(), rdata));
632
633 for (int i = 0; i < dims[0]; i++)
634 {
635 data.push_back(std::string(rdata[i]));
636 }
637 }
static DataTypeSharedPtr String(size_t len=0)
Definition: H5.cpp:517

References H5_CALL, Nektar::LibUtilities::H5::Object::m_Id, and Nektar::LibUtilities::H5::DataType::String().

◆ v_Close()

void Nektar::LibUtilities::H5::DataSet::v_Close ( )
overrideprotectedvirtual

Implements Nektar::LibUtilities::H5::Object.

Definition at line 708 of file H5.cpp.

709{
710 H5_CALL(H5Dclose, (m_Id));
711 m_Id = H5I_INVALID_HID;
712}

References H5_CALL, and Nektar::LibUtilities::H5::Object::m_Id.

◆ Write() [1/3]

template<class T >
void Nektar::LibUtilities::H5::DataSet::Write ( const std::vector< T > &  data)
inline

Definition at line 509 of file H5.h.

510 {
512 H5_CALL(H5Dwrite, (m_Id, mem_t->GetId(), H5S_ALL, H5S_ALL, H5P_DEFAULT,
513 &data[0]));
514 }

References Nektar::LibUtilities::H5::DataTypeTraits< T >::GetType(), H5_CALL, and Nektar::LibUtilities::H5::Object::m_Id.

◆ Write() [2/3]

template<class T >
void Nektar::LibUtilities::H5::DataSet::Write ( const std::vector< T > &  data,
DataSpaceSharedPtr  filespace,
DataTypeSharedPtr  dt,
PListSharedPtr  dxpl = PList::Default() 
)
inline

Definition at line 527 of file H5.h.

529 {
530 DataSpaceSharedPtr memspace = DataSpace::OneD(data.size());
531
532 H5Dwrite(m_Id, dt->GetId(), memspace->GetId(), filespace->GetId(),
533 dxpl->GetId(), &data[0]);
534 }

References Nektar::LibUtilities::H5::Object::m_Id, and Nektar::LibUtilities::H5::DataSpace::OneD().

◆ Write() [3/3]

template<class T >
void Nektar::LibUtilities::H5::DataSet::Write ( const std::vector< T > &  data,
DataSpaceSharedPtr  filespace,
PListSharedPtr  dxpl = PList::Default() 
)
inline

Definition at line 516 of file H5.h.

518 {
520 DataSpaceSharedPtr memspace = DataSpace::OneD(data.size());
521
522 H5_CALL(H5Dwrite, (m_Id, mem_t->GetId(), memspace->GetId(),
523 filespace->GetId(), dxpl->GetId(), &data[0]));
524 }

References Nektar::LibUtilities::H5::DataTypeTraits< T >::GetType(), H5_CALL, Nektar::LibUtilities::H5::Object::m_Id, and Nektar::LibUtilities::H5::DataSpace::OneD().

◆ WriteString()

void Nektar::LibUtilities::H5::DataSet::WriteString ( std::string  s,
DataSpaceSharedPtr  filespace,
DataTypeSharedPtr  type,
PListSharedPtr  dxpl = PList::Default() 
)
inline

Definition at line 536 of file H5.h.

539 {
540 H5_CALL(H5Dwrite, (m_Id, type->GetId(), H5S_ALL, filespace->GetId(),
541 dxpl->GetId(), s.c_str()));
542 }

References H5_CALL, and Nektar::LibUtilities::H5::Object::m_Id.

◆ WriteVectorString()

void Nektar::LibUtilities::H5::DataSet::WriteVectorString ( std::vector< std::string >  s,
DataSpaceSharedPtr  filespace,
DataTypeSharedPtr  type,
PListSharedPtr  dxpl = PList::Default() 
)
inline

Definition at line 544 of file H5.h.

547 {
548 const char **ret;
549 ret = new const char *[s.size()];
550 for (size_t i = 0; i < s.size(); ++i)
551 {
552 ret[i] = s[i].c_str();
553 }
554 H5Dwrite(m_Id, type->GetId(), H5S_ALL, filespace->GetId(),
555 dxpl->GetId(), ret);
556 }

References Nektar::LibUtilities::H5::Object::m_Id.

Friends And Related Function Documentation

◆ CanHaveGroupsDataSets

friend class CanHaveGroupsDataSets
friend

Definition at line 644 of file H5.h.