Nektar++
H5.cpp
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////////////
2 //
3 // File: H5.cpp
4 //
5 // For more information, please see: http://www.nektar.info/
6 //
7 // The MIT License
8 //
9 // Copyright (c) 2006 Division of Applied Mathematics, Brown University (USA),
10 // Department of Aeronautics, Imperial College London (UK), and Scientific
11 // Computing and Imaging Institute, University of Utah (USA).
12 //
13 // Permission is hereby granted, free of charge, to any person obtaining a
14 // copy of this software and associated documentation files (the "Software"),
15 // to deal in the Software without restriction, including without limitation
16 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
17 // and/or sell copies of the Software, and to permit persons to whom the
18 // Software is furnished to do so, subject to the following conditions:
19 //
20 // The above copyright notice and this permission notice shall be included
21 // in all copies or substantial portions of the Software.
22 //
23 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
29 // DEALINGS IN THE SOFTWARE.
30 //
31 // Description: Minimal HDF5 wrapper
32 //
33 ////////////////////////////////////////////////////////////////////////////////
34 
35 #include <boost/core/ignore_unused.hpp>
36 
39 
40 #ifdef NEKTAR_USE_MPI
42 #endif
43 
44 namespace Nektar
45 {
46 namespace LibUtilities
47 {
48 namespace H5
49 {
50 
51 Object::Object() : m_Id(H5I_INVALID_HID)
52 {
53 }
54 Object::Object(hid_t id) : m_Id(id)
55 {
56 }
58 {
59 }
60 
61 PList::PList() : Object(H5P_DEFAULT)
62 {
63 }
64 PList::PList(hid_t cls) : Object()
65 {
66  H5_CONSTRUCT(m_Id, H5Pcreate, (cls));
67 }
69 {
70  Close();
71 }
73 {
74  H5_CALL(H5Pclose, (m_Id));
75  m_Id = H5I_INVALID_HID;
76 }
77 
78 /// Default options
80 {
81  return PListSharedPtr(new PList());
82 }
83 
84 /// Properties for object creation
86 {
87  return PListSharedPtr(new PList(H5P_OBJECT_CREATE));
88 }
89 
90 /// Properties for file creation
92 {
93  return PListSharedPtr(new PList(H5P_FILE_CREATE));
94 }
95 
96 /// Properties for file access
98 {
99  return PListSharedPtr(new PList(H5P_FILE_ACCESS));
100 }
101 
102 /// Properties for dataset creation
104 {
105  return PListSharedPtr(new PList(H5P_DATASET_CREATE));
106 }
107 
108 /// Properties for dataset access
110 {
111  return PListSharedPtr(new PList(H5P_DATASET_ACCESS));
112 }
113 
114 /// Properties for raw data transfer
116 {
117  return PListSharedPtr(new PList(H5P_DATASET_XFER));
118 }
119 
120 /// Properties for file mounting
122 {
123  return PListSharedPtr(new PList(H5P_FILE_MOUNT));
124 }
125 
126 /// Properties for group creation
128 {
129  return PListSharedPtr(new PList(H5P_GROUP_CREATE));
130 }
131 
132 /// Properties for group access
134 {
135  return PListSharedPtr(new PList(H5P_GROUP_ACCESS));
136 }
137 
138 /// Properties for datatype creation
140 {
141  return PListSharedPtr(new PList(H5P_DATATYPE_CREATE));
142 }
143 
144 /// Properties for datatype access
146 {
147  return PListSharedPtr(new PList(H5P_DATATYPE_ACCESS));
148 }
149 
150 /// Properties for character encoding when encoding strings or object names
152 {
153  return PListSharedPtr(new PList(H5P_STRING_CREATE));
154 }
155 
156 /// Properties for attribute creation
158 {
159  return PListSharedPtr(new PList(H5P_ATTRIBUTE_CREATE));
160 }
161 
162 /// Properties governing the object copying process
164 {
165  return PListSharedPtr(new PList(H5P_OBJECT_COPY));
166 }
167 
168 /// Properties governing link creation
170 {
171  return PListSharedPtr(new PList(H5P_LINK_CREATE));
172 }
173 
174 /// Properties governing link traversal when accessing objects
176 {
177  return PListSharedPtr(new PList(H5P_LINK_ACCESS));
178 }
179 void PList::SetChunk(const std::vector<hsize_t> &dims)
180 {
181  H5_CALL(H5Pset_chunk, (m_Id, dims.size(), &dims[0]));
182 }
183 void PList::SetDeflate(const unsigned level)
184 {
185  H5_CALL(H5Pset_deflate, (m_Id, level));
186 }
187 #ifdef NEKTAR_USE_MPI
189 {
190  H5_CALL(H5Pset_dxpl_mpio, (m_Id, H5FD_MPIO_COLLECTIVE));
191 }
193 {
194  H5_CALL(H5Pset_dxpl_mpio, (m_Id, H5FD_MPIO_INDEPENDENT));
195 }
196 void PList::SetMpio(CommSharedPtr comm)
197 {
198  CommMpiSharedPtr mpi_comm = std::dynamic_pointer_cast<CommMpi>(comm);
199  ASSERTL0(mpi_comm, "Can't convert communicator to MPI communicator.")
200  // TODO: accept hints
201  MPI_Info info = MPI_INFO_NULL;
202  H5_CALL(H5Pset_fapl_mpio, (m_Id, mpi_comm->GetComm(), info));
203 }
204 #else
206 {
207  ASSERTL0(false, "Trying to use parallel HDF5 without MPI!");
208 }
210 {
211  ASSERTL0(false, "Trying to use parallel HDF5 without MPI!");
212 }
214 {
215  ASSERTL0(false, "Trying to use parallel HDF5 without MPI!");
216 }
217 #endif
218 
220  PListSharedPtr createPL,
221  PListSharedPtr accessPL)
222 {
223  hid_t grp;
224  H5_CONSTRUCT(grp, H5Gcreate2,
225  (m_Id, name.c_str(), H5P_DEFAULT, createPL->GetId(),
226  accessPL->GetId()));
227  GroupSharedPtr ans(new Group(grp));
228  return ans;
229 }
230 
232  DataTypeSharedPtr type,
233  DataSpaceSharedPtr space,
234  PListSharedPtr createPL,
235  PListSharedPtr accessPL)
236 {
237  hid_t ds;
238  H5_CONSTRUCT(ds, H5Dcreate2,
239  (m_Id, name.c_str(), type->GetId(), space->GetId(),
240  H5P_DEFAULT, createPL->GetId(), accessPL->GetId()));
241 
242  DataSetSharedPtr ans(new DataSet(ds));
243  return ans;
244 }
245 
246 // Open an existing group.
247 // The accessPL can be omitted to use the defaults
249  PListSharedPtr accessPL) const
250 {
251  hid_t grp;
252  H5_CONSTRUCT(grp, H5Gopen2, (m_Id, name.c_str(), accessPL->GetId()));
253  GroupSharedPtr ans(new Group(grp));
254  return ans;
255 }
256 
257 // Open an existing dataset
258 // The accessPL can be omitted to use the defaults
260  const std::string &name, PListSharedPtr accessPL) const
261 {
262  hid_t ds;
263  H5_CONSTRUCT(ds, H5Dopen2, (m_Id, name.c_str(), accessPL->GetId()));
264  DataSetSharedPtr ans(new DataSet(ds));
265  return ans;
266 }
267 
269 {
270  for (auto it = begin(); it != end(); ++it)
271  {
272  if (it.GetName() == nm)
273  {
274  return true;
275  }
276  }
277  return false;
278 }
279 
281 {
282  // Have to use dynamic because of virtual inheritance
284  std::dynamic_pointer_cast<CanHaveGroupsDataSets>(shared_from_this());
286 }
287 
289 {
290  // Have to use dynamic because of virtual inheritance
292  std::dynamic_pointer_cast<CanHaveGroupsDataSets>(shared_from_this());
293  return CanHaveGroupsDataSets::LinkIterator(thisSh, GetNumElements());
294 }
295 
297  CanHaveGroupsDataSetsSharedPtr grp, hsize_t idx)
298  : m_grp(grp), m_idx(-1), m_next(idx), m_size(grp->GetNumElements())
299 {
300  ++*this;
301 }
302 
304 {
305  return m_currentName;
306 }
308 operator++()
309 {
310  m_idx = m_next;
311  if (m_idx < m_size)
312  {
313  H5_CALL(H5Literate, (m_grp->GetId(), H5_INDEX_NAME, H5_ITER_NATIVE,
314  &m_next, LinkIterator::helper, this));
315  }
316  return *this;
317 }
319  const CanHaveGroupsDataSets::LinkIterator &other) const
320 {
321  return (m_grp == other.m_grp && m_idx == other.m_idx);
322 }
323 herr_t CanHaveGroupsDataSets::LinkIterator::helper(hid_t g_id, const char *name,
324  const H5L_info_t *info,
325  void *op_data)
326 {
327  boost::ignore_unused(g_id, info);
329  static_cast<CanHaveGroupsDataSets::LinkIterator *>(op_data);
330  iter->m_currentName = name;
331  return 1;
332 }
333 
335  DataTypeSharedPtr type,
336  DataSpaceSharedPtr space)
337 {
338  return Attribute::Create(m_Id, name, type, space);
339 }
340 
342 {
343  return Attribute::Open(m_Id, name);
344 }
345 
347 {
348  H5O_info_t info;
349  H5_CALL(H5Oget_info, (m_Id, &info));
350  return info.num_attrs;
351 }
352 
354 {
355  // Have to use dynamic because of virtual inheritance
357  std::dynamic_pointer_cast<CanHaveAttributes>(shared_from_this());
358  return CanHaveAttributes::AttrIterator(thisSh);
359 }
361 {
362  // Have to use dynamic because of virtual inheritance
364  std::dynamic_pointer_cast<CanHaveAttributes>(shared_from_this());
365  return CanHaveAttributes::AttrIterator(thisSh, GetNumAttr());
366 }
367 
369  hsize_t idx)
370  : m_obj(obj), m_idx(-1), m_next(idx), m_size(obj->GetNumAttr())
371 {
372  ++*this;
373 }
374 
376 {
377  return m_currentName;
378 }
380 {
381  m_idx = m_next;
382  if (m_next < m_size)
383  {
384  H5_CALL(H5Aiterate2, (m_obj->GetId(), H5_INDEX_CRT_ORDER, H5_ITER_INC,
385  &m_next, AttrIterator::helper, this));
386  }
387  return *this;
388 }
390  const CanHaveAttributes::AttrIterator &other) const
391 {
392  return m_obj == other.m_obj && m_idx == other.m_idx;
393 }
394 
395 herr_t CanHaveAttributes::AttrIterator::helper(hid_t g_id, const char *name,
396  const H5A_info_t *info,
397  void *op_data)
398 {
399  boost::ignore_unused(g_id, info);
401  static_cast<CanHaveAttributes::AttrIterator *>(op_data);
402  iter->m_currentName = name;
403  return 1;
404 }
405 
407 {
408  DataSpaceSharedPtr ans(new DataSpace);
409  H5_CONSTRUCT(ans->m_Id, H5Screate, (H5S_NULL));
410  return ans;
411 }
412 
414 {
415  DataSpaceSharedPtr ans(new DataSpace);
416  H5_CONSTRUCT(ans->m_Id, H5Screate, (H5S_SCALAR));
417  return ans;
418 }
420 {
421  DataSpaceSharedPtr ans(new DataSpace);
422  H5_CONSTRUCT(ans->m_Id, H5Screate_simple, (1, &size, NULL));
423  return ans;
424 }
425 
427 {
428 }
429 
431 {
432 }
433 
434 DataSpace::DataSpace(const std::vector<hsize_t> &dims) : Object()
435 {
436  int rank = dims.size();
437  H5_CONSTRUCT(m_Id, H5Screate_simple, (rank, &dims[0], NULL));
438 }
439 
440 DataSpace::DataSpace(const hsize_t size, const hsize_t max) : Object()
441 {
442  const hsize_t *max_p = NULL;
443  if (max != (H5S_UNLIMITED - 1))
444  max_p = &max;
445  H5_CONSTRUCT(m_Id, H5Screate_simple, (1, &size, max_p));
446 }
447 
448 DataSpace::DataSpace(const std::vector<hsize_t> &dims,
449  const std::vector<hsize_t> &max_dims)
450  : Object()
451 {
452  int rank = dims.size();
453  H5_CONSTRUCT(m_Id, H5Screate_simple, (rank, &dims[0], &max_dims[0]));
454 }
455 
457 {
458  Close();
459 }
460 
462 {
463  H5_CALL(H5Sclose, (m_Id));
464  m_Id = H5I_INVALID_HID;
465 }
466 void DataSpace::SelectRange(const hsize_t start, const hsize_t count)
467 {
468  H5_CALL(H5Sselect_hyperslab,
469  (m_Id, H5S_SELECT_SET, &start, NULL, &count, NULL));
470 }
471 void DataSpace::AppendRange(const hsize_t start, const hsize_t count)
472 {
473  H5_CALL(H5Sselect_hyperslab,
474  (m_Id, H5S_SELECT_OR, &start, NULL, &count, NULL));
475 }
476 void DataSpace::SelectRange(const std::vector<hsize_t> start,
477  const std::vector<hsize_t> count)
478 {
479  H5_CALL(H5Sselect_hyperslab,
480  (m_Id, H5S_SELECT_SET, &start[0], NULL, &count[0], NULL));
481 }
482 void DataSpace::AppendRange(const std::vector<hsize_t> start,
483  const std::vector<hsize_t> count)
484 {
485  H5_CALL(H5Sselect_hyperslab,
486  (m_Id, H5S_SELECT_OR, &start[0], NULL, &count[0], NULL));
487 }
488 void DataSpace::SetSelection(const hsize_t num_elmt,
489  const std::vector<hsize_t> &coords)
490 {
491  if (num_elmt == 0)
492  {
493  H5_CALL(H5Sselect_none, (m_Id));
494  }
495  else
496  {
497  H5_CALL(H5Sselect_elements,
498  (m_Id, H5S_SELECT_SET, num_elmt, &coords[0]));
499  }
500 }
501 
503 {
504  H5_CALL(H5Sselect_none, (m_Id));
505 }
506 
508 {
509  return H5Sget_simple_extent_npoints(m_Id);
510 }
511 
512 std::vector<hsize_t> DataSpace::GetDims()
513 {
514  int ndims = H5Sget_simple_extent_ndims(m_Id);
515  std::vector<hsize_t> ret(ndims, 0);
516  H5Sget_simple_extent_dims(m_Id, &ret[0], NULL);
517  return ret;
518 }
519 
520 DataType::DataType(hid_t id) : Object(id)
521 {
522 }
524 {
526  DataTypeSharedPtr ans = s1->Copy();
527  if (len == 0)
528  {
529  len = H5T_VARIABLE;
530  }
531  H5_CALL(H5Tset_size, (ans->GetId(), len));
532  return ans;
533 }
534 
536 {
537  H5_CALL(H5Tclose, (m_Id));
538  m_Id = H5I_INVALID_HID;
539 }
540 
542 {
543  H5_CALL(H5Tclose, (m_Id));
544  m_Id = H5I_INVALID_HID;
545 }
546 
548 {
549  hid_t ans_id = H5I_INVALID_HID;
550  H5_CONSTRUCT(ans_id, H5Tcopy, (m_Id));
551  DataTypeSharedPtr ans(new DataType(ans_id));
552  return ans;
553 }
554 
556 {
557  return DataTypeSharedPtr(new PredefinedDataType(H5T_C_S1));
558 }
559 
561 {
562  return std::shared_ptr<CompoundDataType>(
563  new CompoundDataType(H5Tcreate(H5T_COMPOUND, sz)));
564 }
565 
567 {
568 }
569 
571 {
572 }
573 
575 {
576  // No-op
577  m_Id = H5I_INVALID_HID;
578 }
579 
580 template <> const hid_t DataTypeTraits<char>::NativeType = H5T_NATIVE_CHAR;
581 
582 template <> const hid_t DataTypeTraits<int>::NativeType = H5T_NATIVE_INT;
583 
584 template <>
585 const hid_t DataTypeTraits<unsigned int>::NativeType = H5T_NATIVE_UINT;
586 
587 template <>
588 const hid_t DataTypeTraits<unsigned long>::NativeType = H5T_NATIVE_ULONG;
589 
590 template <>
591 const hid_t DataTypeTraits<unsigned long long>::NativeType = H5T_NATIVE_ULLONG;
592 
593 template <> const hid_t DataTypeTraits<double>::NativeType = H5T_NATIVE_DOUBLE;
594 
595 template <> const hid_t DataTypeTraits<BasisType>::NativeType = H5T_NATIVE_INT;
596 
597 AttributeSharedPtr Attribute::Create(hid_t parent, const std::string &name,
598  DataTypeSharedPtr type,
599  DataSpaceSharedPtr space)
600 {
601  hid_t id;
602  H5_CONSTRUCT(id, H5Acreate2,
603  (parent, name.c_str(), type->GetId(), space->GetId(),
604  H5P_DEFAULT, H5P_DEFAULT));
605  return AttributeSharedPtr(new Attribute(id));
606 }
607 
608 AttributeSharedPtr Attribute::Open(hid_t parent, const std::string &name)
609 {
610  hid_t id;
611  H5_CONSTRUCT(id, H5Aopen, (parent, name.c_str(), H5P_DEFAULT));
612  return AttributeSharedPtr(new Attribute(id));
613 }
614 
616 {
617  Close();
618 }
620 {
621  H5_CALL(H5Aclose, (m_Id));
622  m_Id = H5I_INVALID_HID;
623 }
624 
626 {
627  return DataSpaceSharedPtr(new DataSpace(H5Aget_space(m_Id)));
628 }
629 
630 File::File(hid_t id) : Object(id)
631 {
632 }
633 FileSharedPtr File::Create(const std::string &filename, unsigned mode,
634  PListSharedPtr createPL, PListSharedPtr accessPL)
635 {
636  hid_t id;
637  H5_CONSTRUCT(
638  id, H5Fcreate,
639  (filename.c_str(), mode, createPL->GetId(), accessPL->GetId()));
640  return FileSharedPtr(new File(id));
641 }
642 FileSharedPtr File::Open(const std::string &filename, unsigned mode,
643  PListSharedPtr accessPL)
644 {
645  hid_t id;
646  H5_CONSTRUCT(id, H5Fopen, (filename.c_str(), mode, accessPL->GetId()));
647  return FileSharedPtr(new File(id));
648 }
649 
651 {
652  if (m_Id != H5I_INVALID_HID)
653  {
654  Close();
655  }
656 }
657 
659 {
660  H5_CALL(H5Fclose, (m_Id));
661  m_Id = H5I_INVALID_HID;
662 }
664 {
665  GroupSharedPtr root = OpenGroup("/");
666  return root->GetNumElements();
667 }
668 Group::Group(hid_t id) : Object(id)
669 {
670 }
671 
673 {
674  if (m_Id != H5I_INVALID_HID)
675  {
676  Close();
677  }
678 }
679 
681 {
682  H5_CALL(H5Gclose, (m_Id));
683  m_Id = H5I_INVALID_HID;
684 }
685 
687 {
688  H5G_info_t info;
689  H5_CALL(H5Gget_info, (m_Id, &info));
690  return info.nlinks;
691 }
692 
693 std::vector<std::string> Group::GetElementNames()
694 {
695  std::vector<std::string> ret;
696  for (int i = 0; i < GetNumElements(); i++)
697  {
698  char name[50];
699  H5Gget_objname_by_idx(m_Id, (size_t)i, name, 50);
700  ret.push_back(std::string(name));
701  }
702  return ret;
703 }
704 
705 DataSet::DataSet(hid_t id) : Object(id)
706 {
707 }
708 
710 {
711  Close();
712 }
713 
715 {
716  H5_CALL(H5Dclose, (m_Id));
717  m_Id = H5I_INVALID_HID;
718 }
719 
721 {
722  return DataSpaceSharedPtr(new DataSpace(H5Dget_space(m_Id)));
723 }
724 } // namespace H5
725 } // namespace LibUtilities
726 } // namespace Nektar
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:215
#define H5_CALL(func, args)
Definition: H5.h:64
#define H5_CONSTRUCT(ans, func, args)
Definition: H5.h:56
static AttributeSharedPtr Open(hid_t parent, const std::string &name)
Definition: H5.cpp:608
DataSpaceSharedPtr GetSpace() const
Definition: H5.cpp:625
virtual void v_Close() override
Definition: H5.cpp:619
static AttributeSharedPtr Create(hid_t parent, const std::string &name, DataTypeSharedPtr type, DataSpaceSharedPtr space)
Definition: H5.cpp:597
bool operator==(const AttrIterator &other) const
Definition: H5.cpp:389
static herr_t helper(hid_t g_id, const char *name, const H5A_info_t *info, void *op_data)
Definition: H5.cpp:395
AttrIterator(CanHaveAttributesSharedPtr obj, hsize_t idx=0)
Definition: H5.cpp:368
AttributeSharedPtr OpenAttribute(const std::string &name)
Definition: H5.cpp:341
AttributeSharedPtr CreateAttribute(const std::string &name, DataTypeSharedPtr type, DataSpaceSharedPtr space)
Definition: H5.cpp:334
GroupSharedPtr OpenGroup(const std::string &name, PListSharedPtr accessPL=PList::Default()) const
Definition: H5.cpp:248
DataSetSharedPtr OpenDataSet(const std::string &name, PListSharedPtr accessPL=PList::Default()) const
Definition: H5.cpp:259
GroupSharedPtr CreateGroup(const std::string &name, PListSharedPtr createPL=PList::Default(), PListSharedPtr accessPL=PList::Default())
Definition: H5.cpp:219
DataSetSharedPtr CreateDataSet(const std::string &name, DataTypeSharedPtr type, DataSpaceSharedPtr space, PListSharedPtr createPL=PList::Default(), PListSharedPtr accessPL=PList::Default())
Definition: H5.cpp:231
static CompoundDataTypeSharedPtr Create(size_t sz)
Definition: H5.cpp:560
virtual void v_Close() override
Definition: H5.cpp:535
DataSpaceSharedPtr GetSpace() const
Definition: H5.cpp:720
virtual void v_Close() override
Definition: H5.cpp:714
HDF5 DataSpace wrapper.
Definition: H5.h:315
void SelectRange(const hsize_t start, const hsize_t count)
Definition: H5.cpp:466
void AppendRange(const hsize_t start, const hsize_t count)
Definition: H5.cpp:471
virtual void v_Close() override
Definition: H5.cpp:461
static DataSpaceSharedPtr Null()
Definition: H5.cpp:406
static DataSpaceSharedPtr Scalar()
Definition: H5.cpp:413
std::vector< hsize_t > GetDims()
Definition: H5.cpp:512
static DataSpaceSharedPtr OneD(hsize_t size)
Definition: H5.cpp:419
void SetSelection(const hsize_t num_elmt, const std::vector< hsize_t > &coords)
Definition: H5.cpp:488
Wrap and HDF5 data type object. Technically this can have attributes, but not really bothered.
Definition: H5.h:399
virtual void v_Close() override
Definition: H5.cpp:541
DataTypeSharedPtr Copy() const
Definition: H5.cpp:547
static DataTypeSharedPtr String(size_t len=0)
Definition: H5.cpp:523
static FileSharedPtr Open(const std::string &filename, unsigned mode, PListSharedPtr accessPL=PList::Default())
Definition: H5.cpp:642
static FileSharedPtr Create(const std::string &filename, unsigned mode, PListSharedPtr createPL=PList::Default(), PListSharedPtr accessPL=PList::Default())
Definition: H5.cpp:633
virtual hsize_t v_GetNumElements() override
Definition: H5.cpp:663
virtual void v_Close() override
Definition: H5.cpp:658
HDF5 Group wrapper.
Definition: H5.h:493
std::vector< std::string > GetElementNames()
Definition: H5.cpp:693
virtual hsize_t v_GetNumElements() override
Definition: H5.cpp:686
virtual void v_Close() override
Definition: H5.cpp:680
HDF5 base class.
Definition: H5.h:102
static PListSharedPtr ObjectCreate()
Properties for object creation.
Definition: H5.cpp:85
static PListSharedPtr DatasetXfer()
Properties for raw data transfer.
Definition: H5.cpp:115
static PListSharedPtr StringCreate()
Properties for character encoding when encoding strings or object names.
Definition: H5.cpp:151
static PListSharedPtr FileAccess()
Properties for file access.
Definition: H5.cpp:97
void SetMpio(CommSharedPtr comm)
Definition: H5.cpp:213
void SetDeflate(const unsigned level=1)
Definition: H5.cpp:183
static PListSharedPtr FileCreate()
Properties for file creation.
Definition: H5.cpp:91
static PListSharedPtr GroupAccess()
Properties for group access.
Definition: H5.cpp:133
static PListSharedPtr DatasetAccess()
Properties for dataset access.
Definition: H5.cpp:109
static PListSharedPtr Default()
Default options.
Definition: H5.cpp:79
static PListSharedPtr FileMount()
Properties for file mounting.
Definition: H5.cpp:121
static PListSharedPtr ObjectCopy()
Properties governing the object copying process.
Definition: H5.cpp:163
static PListSharedPtr DatasetCreate()
Properties for dataset creation.
Definition: H5.cpp:103
static PListSharedPtr GroupCreate()
Properties for group creation.
Definition: H5.cpp:127
void SetChunk(const std::vector< hsize_t > &dims)
Definition: H5.cpp:179
static PListSharedPtr AttributeCreate()
Properties for attribute creation.
Definition: H5.cpp:157
static PListSharedPtr LinkAccess()
Properties governing link traversal when accessing objects.
Definition: H5.cpp:175
static PListSharedPtr LinkCreate()
Properties governing link creation.
Definition: H5.cpp:169
static PListSharedPtr DatatypeCreate()
Properties for datatype creation.
Definition: H5.cpp:139
static PListSharedPtr DatatypeAccess()
Properties for datatype access.
Definition: H5.cpp:145
virtual void v_Close() override
Definition: H5.cpp:72
virtual void v_Close() override
Definition: H5.cpp:574
static DataTypeSharedPtr CS1()
Definition: H5.cpp:555
std::shared_ptr< DataSpace > DataSpaceSharedPtr
Definition: H5.h:83
std::shared_ptr< PList > PListSharedPtr
Definition: H5.h:97
std::shared_ptr< File > FileSharedPtr
Definition: H5.h:93
std::shared_ptr< DataType > DataTypeSharedPtr
Definition: H5.h:79
std::shared_ptr< CanHaveGroupsDataSets > CanHaveGroupsDataSetsSharedPtr
Definition: H5.h:89
std::shared_ptr< Attribute > AttributeSharedPtr
Definition: H5.h:87
std::shared_ptr< CompoundDataType > CompoundDataTypeSharedPtr
Definition: H5.h:81
std::shared_ptr< CanHaveAttributes > CanHaveAttributesSharedPtr
Definition: H5.h:85
std::shared_ptr< Group > GroupSharedPtr
Definition: FieldIOHdf5.h:49
std::shared_ptr< DataSet > DataSetSharedPtr
Definition: H5.h:95
std::shared_ptr< CommMpi > CommMpiSharedPtr
Pointer to a Communicator object.
Definition: CommMpi.h:55
std::shared_ptr< Comm > CommSharedPtr
Pointer to a Communicator object.
Definition: Comm.h:54
The above copyright notice and this permission notice shall be included.
Definition: CoupledSolver.h:2
Traits class for HDF5 data types.
Definition: H5.h:369