Added some hdf5 attributes to the root /.
This commit is contained in:
parent
dfc84370dc
commit
e0018a6da4
@ -49,7 +49,7 @@ public:
|
|||||||
static Gas* newGas(const GasType gastype,d T0, d p0);
|
static Gas* newGas(const GasType gastype,d T0, d p0);
|
||||||
|
|
||||||
operator GasType() { return _gastype;}
|
operator GasType() { return _gastype;}
|
||||||
|
const string& gasName() const { return pb::GasType_Name(_gastype); }
|
||||||
d T0() const {return _T0;}
|
d T0() const {return _T0;}
|
||||||
d p0() const {return _p0;}
|
d p0() const {return _p0;}
|
||||||
|
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
// Description:
|
// Description:
|
||||||
//
|
//
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
#include <hdf5.h>
|
|
||||||
|
|
||||||
#include "segment.h"
|
#include "segment.h"
|
||||||
#include "tasystem.h"
|
#include "tasystem.h"
|
||||||
@ -18,6 +17,9 @@
|
|||||||
#include "duct.h"
|
#include "duct.h"
|
||||||
#include "ductbc.h"
|
#include "ductbc.h"
|
||||||
|
|
||||||
|
#include <hdf5.h>
|
||||||
|
// Lite version of the library
|
||||||
|
#include <hdf5_hl.h>
|
||||||
|
|
||||||
TaSystem::TaSystem(const pb::System& sys):
|
TaSystem::TaSystem(const pb::System& sys):
|
||||||
GlobalConf(sys.nf(),sys.freq())
|
GlobalConf(sys.nf(),sys.freq())
|
||||||
@ -423,26 +425,64 @@ void TaSystem::exportHDF5(const string& filename) const {
|
|||||||
herr_t status;
|
herr_t status;
|
||||||
|
|
||||||
file_id = H5Fcreate (filename.c_str(),
|
file_id = H5Fcreate (filename.c_str(),
|
||||||
H5F_ACC_TRUNC,
|
H5F_ACC_TRUNC, // Truncate any existing file
|
||||||
H5P_DEFAULT,
|
H5P_DEFAULT,
|
||||||
H5P_DEFAULT);
|
H5P_DEFAULT);
|
||||||
|
|
||||||
|
|
||||||
|
d freq = getfreq();
|
||||||
|
H5LTset_attribute_double(file_id,
|
||||||
|
"/",
|
||||||
|
"freq",
|
||||||
|
&freq,1);
|
||||||
|
|
||||||
|
|
||||||
|
int Ns = this->Ns();
|
||||||
|
H5LTset_attribute_int(file_id,
|
||||||
|
"/",
|
||||||
|
"Ns",
|
||||||
|
&Ns,1);
|
||||||
|
|
||||||
|
vd timeInstances = this->timeInstances();
|
||||||
|
H5LTset_attribute_double(file_id,
|
||||||
|
"/",
|
||||||
|
"t",
|
||||||
|
timeInstances.memptr(),
|
||||||
|
timeInstances.size());
|
||||||
|
|
||||||
|
d p0 = _gas->p0();
|
||||||
|
H5LTset_attribute_double(file_id,
|
||||||
|
"/",
|
||||||
|
"p0",
|
||||||
|
&p0,1);
|
||||||
|
|
||||||
|
d T0 = _gas->T0();
|
||||||
|
H5LTset_attribute_double(file_id,
|
||||||
|
"/",
|
||||||
|
"T0",
|
||||||
|
&T0,1);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const string& gasName = _gas->gasName();
|
||||||
|
H5LTset_attribute_string(file_id,
|
||||||
|
"/",
|
||||||
|
"gas",
|
||||||
|
gasName.c_str());
|
||||||
|
|
||||||
for(const auto& seg_ : _segs) {
|
for(const auto& seg_ : _segs) {
|
||||||
// Create a group for each segment
|
// Create a group for each segment
|
||||||
hid_t grp_id = H5Gcreate(file_id,
|
hid_t grp_id = H5Gcreate(file_id,
|
||||||
(string("/") + std::to_string(seg_.first)).c_str(),
|
(string("/") +
|
||||||
|
std::to_string(seg_.first)).c_str(),
|
||||||
H5P_DEFAULT,
|
H5P_DEFAULT,
|
||||||
H5P_DEFAULT,
|
H5P_DEFAULT,
|
||||||
H5P_DEFAULT);
|
H5P_DEFAULT);
|
||||||
|
|
||||||
seg_.second->exportHDF5(grp_id);
|
seg_.second->exportHDF5(grp_id);
|
||||||
|
|
||||||
H5Gclose(grp_id);
|
|
||||||
|
|
||||||
// ^^ uncommenting above results in segfault. Why?
|
H5Gclose(grp_id);
|
||||||
// seg_.second->exportHDF5(file_id);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user