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, (m_Id, name.c_str(), H5P_DEFAULT,
225  createPL->GetId(), accessPL->GetId()));
226  GroupSharedPtr ans(new Group(grp));
227  return ans;
228 }
229 
231  DataTypeSharedPtr type,
232  DataSpaceSharedPtr space,
233  PListSharedPtr createPL,
234  PListSharedPtr accessPL)
235 {
236  hid_t ds;
237  H5_CONSTRUCT(ds, H5Dcreate2,
238  (m_Id, name.c_str(), type->GetId(), space->GetId(),
239  H5P_DEFAULT, createPL->GetId(), accessPL->GetId()));
240 
241  DataSetSharedPtr ans(new DataSet(ds));
242  return ans;
243 }
244 
245 // Open an existing group.
246 // The accessPL can be omitted to use the defaults
248  PListSharedPtr accessPL) const
249 {
250  hid_t grp;
251  H5_CONSTRUCT(grp, H5Gopen2, (m_Id, name.c_str(), accessPL->GetId()));
252  GroupSharedPtr ans(new Group(grp));
253  return ans;
254 }
255 
256 // Open an existing dataset
257 // The accessPL can be omitted to use the defaults
259  const std::string &name, PListSharedPtr accessPL) const
260 {
261  hid_t ds;
262  H5_CONSTRUCT(ds, H5Dopen2, (m_Id, name.c_str(), accessPL->GetId()));
263  DataSetSharedPtr ans(new DataSet(ds));
264  return ans;
265 }
266 
268 {
269  for(auto it = begin(); it != end(); ++it)
270  {
271  if(it.GetName() == nm)
272  {
273  return true;
274  }
275  }
276  return false;
277 }
278 
280 {
281  // Have to use dynamic because of virtual inheritance
283  std::dynamic_pointer_cast<CanHaveGroupsDataSets>(shared_from_this());
285 }
286 
288 {
289  // Have to use dynamic because of virtual inheritance
291  std::dynamic_pointer_cast<CanHaveGroupsDataSets>(shared_from_this());
292  return CanHaveGroupsDataSets::LinkIterator(thisSh, GetNumElements());
293 }
294 
296  CanHaveGroupsDataSetsSharedPtr grp, hsize_t idx)
297  : m_grp(grp), m_idx(-1), m_next(idx), m_size(grp->GetNumElements())
298 {
299  ++*this;
300 }
301 
303 {
304  return m_currentName;
305 }
308 {
309  m_idx = m_next;
310  if (m_idx < m_size)
311  {
312  H5_CALL(H5Literate, (m_grp->GetId(), H5_INDEX_NAME, H5_ITER_NATIVE,
313  &m_next, LinkIterator::helper, this));
314  }
315  return *this;
316 }
318  const CanHaveGroupsDataSets::LinkIterator &other) const
319 {
320  return (m_grp == other.m_grp && m_idx == other.m_idx);
321 }
322 herr_t CanHaveGroupsDataSets::LinkIterator::helper(hid_t g_id, const char *name,
323  const H5L_info_t * info,
324  void *op_data)
325 {
326  boost::ignore_unused(g_id, info);
328  static_cast<CanHaveGroupsDataSets::LinkIterator *>(op_data);
329  iter->m_currentName = name;
330  return 1;
331 }
332 
334  DataTypeSharedPtr type,
335  DataSpaceSharedPtr space)
336 {
337  return Attribute::Create(m_Id, name, type, space);
338 }
339 
341 {
342  return Attribute::Open(m_Id, name);
343 }
344 
346 {
347  H5O_info_t info;
348  H5_CALL(H5Oget_info, (m_Id, &info));
349  return info.num_attrs;
350 }
351 
353 {
354  // Have to use dynamic because of virtual inheritance
356  std::dynamic_pointer_cast<CanHaveAttributes>(shared_from_this());
357  return CanHaveAttributes::AttrIterator(thisSh);
358 }
360 {
361  // Have to use dynamic because of virtual inheritance
363  std::dynamic_pointer_cast<CanHaveAttributes>(shared_from_this());
364  return CanHaveAttributes::AttrIterator(thisSh, GetNumAttr());
365 }
366 
368  hsize_t idx)
369  : m_obj(obj), m_idx(-1), m_next(idx), m_size(obj->GetNumAttr())
370 {
371  ++*this;
372 }
373 
375 {
376  return m_currentName;
377 }
379 {
380  m_idx = m_next;
381  if (m_next < m_size)
382  {
383  H5_CALL(H5Aiterate2, (m_obj->GetId(), H5_INDEX_CRT_ORDER, H5_ITER_INC,
384  &m_next, AttrIterator::helper, this));
385  }
386  return *this;
387 }
389  const CanHaveAttributes::AttrIterator &other) const
390 {
391  return m_obj == other.m_obj && m_idx == other.m_idx;
392 }
393 
394 herr_t CanHaveAttributes::AttrIterator::helper(hid_t g_id, const char *name,
395  const H5A_info_t * info,
396  void *op_data)
397 {
398  boost::ignore_unused(g_id, info);
400  static_cast<CanHaveAttributes::AttrIterator *>(op_data);
401  iter->m_currentName = name;
402  return 1;
403 }
404 
406 {
407  DataSpaceSharedPtr ans(new DataSpace);
408  H5_CONSTRUCT(ans->m_Id, H5Screate, (H5S_NULL));
409  return ans;
410 }
411 
413 {
414  DataSpaceSharedPtr ans(new DataSpace);
415  H5_CONSTRUCT(ans->m_Id, H5Screate, (H5S_SCALAR));
416  return ans;
417 }
419 {
420  DataSpaceSharedPtr ans(new DataSpace);
421  H5_CONSTRUCT(ans->m_Id, H5Screate_simple, (1, &size, NULL));
422  return ans;
423 }
424 
426 {
427 }
428 
430 {
431 }
432 
433 DataSpace::DataSpace(const std::vector<hsize_t> &dims) : Object()
434 {
435  int rank = dims.size();
436  H5_CONSTRUCT(m_Id, H5Screate_simple, (rank, &dims[0], NULL));
437 }
438 
439 DataSpace::DataSpace(const hsize_t size, const hsize_t max) : Object()
440 {
441  const hsize_t *max_p = NULL;
442  if (max != (H5S_UNLIMITED - 1))
443  max_p = &max;
444  H5_CONSTRUCT(m_Id, H5Screate_simple, (1, &size, max_p));
445 }
446 
447 DataSpace::DataSpace(const std::vector<hsize_t> &dims,
448  const std::vector<hsize_t> &max_dims)
449  : Object()
450 {
451  int rank = dims.size();
452  H5_CONSTRUCT(m_Id, H5Screate_simple, (rank, &dims[0], &max_dims[0]));
453 }
454 
456 {
457  Close();
458 }
459 
461 {
462  H5_CALL(H5Sclose, (m_Id));
463  m_Id = H5I_INVALID_HID;
464 }
465 void DataSpace::SelectRange(const hsize_t start, const hsize_t count)
466 {
467  H5_CALL(H5Sselect_hyperslab,
468  (m_Id, H5S_SELECT_SET, &start, NULL, &count, NULL));
469 }
470 void DataSpace::AppendRange(const hsize_t start, const hsize_t count)
471 {
472  H5_CALL(H5Sselect_hyperslab,
473  (m_Id, H5S_SELECT_OR, &start, NULL, &count, NULL));
474 }
475 void DataSpace::SelectRange(const std::vector<hsize_t> start,
476  const std::vector<hsize_t> count)
477 {
478  H5_CALL(H5Sselect_hyperslab,
479  (m_Id, H5S_SELECT_SET, &start[0], NULL, &count[0], NULL));
480 }
481 void DataSpace::AppendRange(const std::vector<hsize_t> start,
482  const std::vector<hsize_t> count)
483 {
484  H5_CALL(H5Sselect_hyperslab,
485  (m_Id, H5S_SELECT_OR, &start[0], NULL, &count[0], NULL));
486 }
487 void DataSpace::SetSelection(const hsize_t num_elmt,
488  const std::vector<hsize_t> &coords)
489 {
490  if (num_elmt == 0)
491  {
492  H5_CALL(H5Sselect_none, (m_Id));
493  }
494  else
495  {
496  H5_CALL(H5Sselect_elements,
497  (m_Id, H5S_SELECT_SET, num_elmt, &coords[0]));
498  }
499 }
500 
502 {
503  H5_CALL(H5Sselect_none, (m_Id));
504 }
505 
507 {
508  return H5Sget_simple_extent_npoints(m_Id);
509 }
510 
511 std::vector<hsize_t> DataSpace::GetDims()
512 {
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);
516  return ret;
517 }
518 
519 DataType::DataType(hid_t id) : Object(id)
520 {
521 }
523 {
525  DataTypeSharedPtr ans = s1->Copy();
526  if (len == 0)
527  {
528  len = H5T_VARIABLE;
529  }
530  H5_CALL(H5Tset_size, (ans->GetId(), len));
531  return ans;
532 }
533 
535 {
536  H5_CALL(H5Tclose, (m_Id));
537  m_Id = H5I_INVALID_HID;
538 }
539 
541 {
542  H5_CALL(H5Tclose, (m_Id));
543  m_Id = H5I_INVALID_HID;
544 }
545 
547 {
548  hid_t ans_id = H5I_INVALID_HID;
549  H5_CONSTRUCT(ans_id, H5Tcopy, (m_Id));
550  DataTypeSharedPtr ans(new DataType(ans_id));
551  return ans;
552 }
553 
555 {
556  return DataTypeSharedPtr(new PredefinedDataType(H5T_C_S1));
557 }
558 
560 {
561  return std::shared_ptr<CompoundDataType>(
562  new CompoundDataType(H5Tcreate(H5T_COMPOUND, sz)));
563 }
564 
566 {
567 }
568 
570 {
571 }
572 
574 {
575  // No-op
576  m_Id = H5I_INVALID_HID;
577 }
578 
579 template <> const hid_t DataTypeTraits<char>::NativeType = H5T_NATIVE_CHAR;
580 
581 template <> const hid_t DataTypeTraits<int>::NativeType = H5T_NATIVE_INT;
582 
583 template <>
584 const hid_t DataTypeTraits<unsigned int>::NativeType = H5T_NATIVE_UINT;
585 
586 template <>
587 const hid_t DataTypeTraits<unsigned long>::NativeType = H5T_NATIVE_ULONG;
588 
589 template <>
590 const hid_t DataTypeTraits<unsigned long long>::NativeType = H5T_NATIVE_ULLONG;
591 
592 template <> const hid_t DataTypeTraits<double>::NativeType = H5T_NATIVE_DOUBLE;
593 
594 template <> const hid_t DataTypeTraits<BasisType>::NativeType = H5T_NATIVE_INT;
595 
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, (parent, name.c_str(), type->GetId(),
603  space->GetId(), H5P_DEFAULT, H5P_DEFAULT));
604  return AttributeSharedPtr(new Attribute(id));
605 }
606 
607 AttributeSharedPtr Attribute::Open(hid_t parent, const std::string &name)
608 {
609  hid_t id;
610  H5_CONSTRUCT(id, H5Aopen, (parent, name.c_str(), H5P_DEFAULT));
611  return AttributeSharedPtr(new Attribute(id));
612 }
613 
615 {
616  Close();
617 }
619 {
620  H5_CALL(H5Aclose, (m_Id));
621  m_Id = H5I_INVALID_HID;
622 }
623 
625 {
626  return DataSpaceSharedPtr(new DataSpace(H5Aget_space(m_Id)));
627 }
628 
629 File::File(hid_t id) : Object(id)
630 {
631 }
632 FileSharedPtr File::Create(const std::string &filename, unsigned mode,
633  PListSharedPtr createPL, PListSharedPtr accessPL)
634 {
635  hid_t id;
636  H5_CONSTRUCT(id, H5Fcreate, (filename.c_str(), mode, createPL->GetId(),
637  accessPL->GetId()));
638  return FileSharedPtr(new File(id));
639 }
640 FileSharedPtr File::Open(const std::string &filename, unsigned mode,
641  PListSharedPtr accessPL)
642 {
643  hid_t id;
644  H5_CONSTRUCT(id, H5Fopen, (filename.c_str(), mode, accessPL->GetId()));
645  return FileSharedPtr(new File(id));
646 }
647 
649 {
650  if (m_Id != H5I_INVALID_HID)
651  {
652  Close();
653  }
654 }
655 
657 {
658  H5_CALL(H5Fclose, (m_Id));
659  m_Id = H5I_INVALID_HID;
660 }
662 {
663  GroupSharedPtr root = OpenGroup("/");
664  return root->GetNumElements();
665 }
666 Group::Group(hid_t id) : Object(id)
667 {
668 }
669 
671 {
672  if (m_Id != H5I_INVALID_HID)
673  {
674  Close();
675  }
676 }
677 
679 {
680  H5_CALL(H5Gclose, (m_Id));
681  m_Id = H5I_INVALID_HID;
682 }
683 
685 {
686  H5G_info_t info;
687  H5_CALL(H5Gget_info, (m_Id, &info));
688  return info.nlinks;
689 }
690 
691 std::vector<std::string> Group::GetElementNames()
692 {
693  std::vector<std::string> ret;
694  for(int i = 0; i < GetNumElements(); i++)
695  {
696  char name[50];
697  H5Gget_objname_by_idx(m_Id, (size_t)i, name, 50 );
698  ret.push_back(std::string(name));
699  }
700  return ret;
701 }
702 
703 DataSet::DataSet(hid_t id) : Object(id)
704 {
705 }
706 
708 {
709  Close();
710 }
711 
713 {
714  H5_CALL(H5Dclose, (m_Id));
715  m_Id = H5I_INVALID_HID;
716 }
717 
719 {
720  return DataSpaceSharedPtr(new DataSpace(H5Dget_space(m_Id)));
721 }
722 }
723 }
724 }
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:216
#define H5_CALL(func, args)
Definition: H5.h:67
#define H5_CONSTRUCT(ans, func, args)
Definition: H5.h:56
static AttributeSharedPtr Open(hid_t parent, const std::string &name)
Definition: H5.cpp:607
DataSpaceSharedPtr GetSpace() const
Definition: H5.cpp:624
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:388
static herr_t helper(hid_t g_id, const char *name, const H5A_info_t *info, void *op_data)
Definition: H5.cpp:394
AttrIterator(CanHaveAttributesSharedPtr obj, hsize_t idx=0)
Definition: H5.cpp:367
AttributeSharedPtr OpenAttribute(const std::string &name)
Definition: H5.cpp:340
AttributeSharedPtr CreateAttribute(const std::string &name, DataTypeSharedPtr type, DataSpaceSharedPtr space)
Definition: H5.cpp:333
GroupSharedPtr OpenGroup(const std::string &name, PListSharedPtr accessPL=PList::Default()) const
Definition: H5.cpp:247
DataSetSharedPtr OpenDataSet(const std::string &name, PListSharedPtr accessPL=PList::Default()) const
Definition: H5.cpp:258
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:230
static CompoundDataTypeSharedPtr Create(size_t sz)
Definition: H5.cpp:559
DataSpaceSharedPtr GetSpace() const
Definition: H5.cpp:718
HDF5 DataSpace wrapper.
Definition: H5.h:315
void SelectRange(const hsize_t start, const hsize_t count)
Definition: H5.cpp:465
void AppendRange(const hsize_t start, const hsize_t count)
Definition: H5.cpp:470
static DataSpaceSharedPtr Null()
Definition: H5.cpp:405
static DataSpaceSharedPtr Scalar()
Definition: H5.cpp:412
std::vector< hsize_t > GetDims()
Definition: H5.cpp:511
static DataSpaceSharedPtr OneD(hsize_t size)
Definition: H5.cpp:418
void SetSelection(const hsize_t num_elmt, const std::vector< hsize_t > &coords)
Definition: H5.cpp:487
Wrap and HDF5 data type object. Technically this can have attributes, but not really bothered.
Definition: H5.h:398
DataTypeSharedPtr Copy() const
Definition: H5.cpp:546
static DataTypeSharedPtr String(size_t len=0)
Definition: H5.cpp:522
static FileSharedPtr Open(const std::string &filename, unsigned mode, PListSharedPtr accessPL=PList::Default())
Definition: H5.cpp:640
static FileSharedPtr Create(const std::string &filename, unsigned mode, PListSharedPtr createPL=PList::Default(), PListSharedPtr accessPL=PList::Default())
Definition: H5.cpp:632
virtual hsize_t GetNumElements()
Definition: H5.cpp:661
HDF5 Group wrapper.
Definition: H5.h:486
virtual hsize_t GetNumElements()
Definition: H5.cpp:684
std::vector< std::string > GetElementNames()
Definition: H5.cpp:691
HDF5 base class.
Definition: H5.h:109
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
static DataTypeSharedPtr CS1()
Definition: H5.cpp:554
std::shared_ptr< DataSpace > DataSpaceSharedPtr
Definition: H5.h:90
std::shared_ptr< PList > PListSharedPtr
Definition: H5.h:104
std::shared_ptr< File > FileSharedPtr
Definition: H5.h:100
std::shared_ptr< DataType > DataTypeSharedPtr
Definition: H5.h:86
std::shared_ptr< CanHaveGroupsDataSets > CanHaveGroupsDataSetsSharedPtr
Definition: H5.h:96
std::shared_ptr< Attribute > AttributeSharedPtr
Definition: H5.h:94
std::shared_ptr< CompoundDataType > CompoundDataTypeSharedPtr
Definition: H5.h:88
std::shared_ptr< CanHaveAttributes > CanHaveAttributesSharedPtr
Definition: H5.h:92
std::shared_ptr< Group > GroupSharedPtr
Definition: FieldIOHdf5.h:49
std::shared_ptr< DataSet > DataSetSharedPtr
Definition: H5.h:102
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:1
Traits class for HDF5 data types.
Definition: H5.h:368