hdf5_logger.cpp
1 #include "hdf5_logger.hpp"
2 #include "../misc/utils.hpp"
3 #include "../misc/lazy_list.hpp"
4 #include "tessellation.hpp"
5 #include "../misc/hdf5_utils.hpp"
6 
7 HDF5Logger::HDF5Logger(const string& fname):
8  fname_(fname) {}
9 
10 namespace{
11  class CoordinateExtractor: public LazyList<double>
12  {
13  public:
14 
15  CoordinateExtractor(const Tessellation& tess,
16  double Vector2D::* component):
17  tess_(tess), component_(component) {}
18 
19  size_t size(void) const
20  {
21  return static_cast<size_t>(tess_.GetPointNo());
22  }
23 
24  double operator[](size_t i) const
25  {
26  return (tess_.GetMeshPoint(static_cast<int>(i))).*component_;
27  }
28 
29  private:
30  const Tessellation& tess_;
31  double Vector2D::* component_;
32  };
33 }
34 
36 {
37  HDF5Shortcut hdf5sc(fname_);
38  hdf5sc(string("x"),serial_generate(CoordinateExtractor(reinterpret_cast<const Tessellation&>(v),&Vector2D::x)));
39  hdf5sc(string("y"),serial_generate(CoordinateExtractor(reinterpret_cast<const Tessellation&>(v),&Vector2D::y)));
40 }
41 
43 {
44  HDF5Shortcut hdf5sc(fname_);
45  hdf5sc("x",serial_generate(CoordinateExtractor(v,&Vector2D::x)));
46  hdf5sc("y",serial_generate(CoordinateExtractor(v,&Vector2D::y)));
47 }
Voronoi tessellation class.
Definition: VoronoiMesh.hpp:29
Abstract class for tessellation.
vector< T > serial_generate(const LazyList< T > &ll)
Creates a vector from an LazyList.
Definition: lazy_list.hpp:49
Facilitates writing hdf5 files.
Definition: hdf5_utils.hpp:75
void output(const VoronoiMesh &v)
Outputs information from the Voronoi tessellation.
Definition: hdf5_logger.cpp:35
Abstract class for the tessellation.
double y
Component in the y direction.
Definition: geometry.hpp:48
Ordered list whose terms are evaluated lazily.
Definition: lazy_list.hpp:17
Method for dumping tessellation data to hdf5 file.
HDF5Logger(const string &fname)
Class constructor.
Definition: hdf5_logger.cpp:7
2D Mathematical vector
Definition: geometry.hpp:15
double x
Component in the x direction.
Definition: geometry.hpp:45