IFEM  90A354
HDF5Writer.h
Go to the documentation of this file.
1 // $Id$
2 //==============================================================================
12 //==============================================================================
13 
14 #ifndef _HDF5_WRITER_H
15 #define _HDF5_WRITER_H
16 
17 #include "DataExporter.h"
18 #include "HDF5Base.h"
19 
20 class SIMbase;
21 
22 
29 class HDF5Writer : public DataWriter, public HDF5Base
30 {
31 public:
36  HDF5Writer(const std::string& name, const ProcessAdm& adm,
37  bool append = false);
38 
40  virtual ~HDF5Writer() {}
41 
43  virtual int getLastTimeLevel();
44 
47  virtual void openFile(int level);
48 
51  virtual void closeFile(int level);
52 
56  virtual void writeVector(int level, const DataEntry& entry);
57 
68  virtual void writeSIM(int level, double time, const DataEntry& entry,
69  bool geometryUpdated, const std::string& prefix);
70 
74  virtual void writeNodalForces(int level, const DataEntry& entry);
75 
80  virtual void writeKnotspan(int level, const DataEntry& entry,
81  const std::string& prefix);
82 
87  virtual void writeBasis(int level, const DataEntry& entry,
88  const std::string& prefix);
89 
93  virtual bool writeTimeInfo(int level, double time);
94 
98  virtual bool writeLog(const std::string& data, const std::string& name);
99 
100 #ifdef HAS_HDF5
101 protected:
104  void addGroup(const std::string& path) const;
108  hid_t getGroup(const std::string& path, hid_t group = -1) const;
109 
117  void writeArray(hid_t group, const std::string& name,
118  int patch, int len, const void* data, hid_t type);
119 
127  void writeBasis(const SIMbase* SIM, const std::string& name,
128  int basis, int level, bool redundant = false,
129  bool l2g = false);
130 
131 private:
132  unsigned int m_flag;
133 #endif
134 };
135 
136 #endif
Administer and write data using DataWriters.
std::pair< std::string, DataExporter::FileEntry > DataEntry
Convenience type alias.
Definition: DataExporter.h:149
Base class for interacting with HDF5 files.
Stores and reads data from a file.
Definition: DataExporter.h:160
Base class for interacting with HDF5 files.
Definition: HDF5Base.h:30
void closeFile()
Closes the HDF5 file.
Definition: HDF5Base.C:81
Write data to a HDF5 file.
Definition: HDF5Writer.h:30
virtual void writeVector(int level, const DataEntry &entry)
Writes a vector to file.
Definition: HDF5Writer.C:188
virtual int getLastTimeLevel()
Returns the last time level stored in the HDF5 file.
Definition: HDF5Writer.C:52
virtual bool writeTimeInfo(int level, double time)
Writes time stepping info to file.
Definition: HDF5Writer.C:706
virtual ~HDF5Writer()
Empty destructor.
Definition: HDF5Writer.h:40
virtual void writeKnotspan(int level, const DataEntry &entry, const std::string &prefix)
Writes knot span field to file.
Definition: HDF5Writer.C:555
virtual void writeBasis(int level, const DataEntry &entry, const std::string &prefix)
Writes a basis to file.
Definition: HDF5Writer.C:214
virtual void writeSIM(int level, double time, const DataEntry &entry, bool geometryUpdated, const std::string &prefix)
Writes data from a SIM to file.
Definition: HDF5Writer.C:231
HDF5Writer(const std::string &name, const ProcessAdm &adm, bool append=false)
The constructor opens a named HDF5-file.
Definition: HDF5Writer.C:37
virtual void openFile(int level)
Opens the file at a given time level.
Definition: HDF5Writer.C:79
virtual void writeNodalForces(int level, const DataEntry &entry)
Writes nodal forces to file.
Definition: HDF5Writer.C:720
virtual bool writeLog(const std::string &data, const std::string &name)
Write a log to output file.
Definition: HDF5Writer.C:757
Class for administration of MPI processes in IFEM library.
Definition: ProcessAdm.h:33
Base class for NURBS-based FEM simulators.
Definition: SIMbase.h:72
Simulation scope.
Definition: ForceIntegrator.h:27