00001 #include <iostream>
00002 #include "assert.h"
00003 #include "meshbuilder.h"
00004
00005
00006 #include "hdf5.h"
00007 #define REALFILETYPE H5T_IEEE_F64BE // 'Double' type used to create the datafile
00008 #define REALMEMTYPE H5T_NATIVE_DOUBLE // Data type used in memory natively
00009 #define INTFILETYPE H5T_STD_I32BE //INT type used to create the datafile
00010 #define INTMEMTYPE H5T_NATIVE_INT
00011
00012
00013 class HDF5FileBuilder : public MeshBuilder {
00014 public:
00015 HDF5FileBuilder(const char* outputFile);
00016 ~HDF5FileBuilder();
00018 virtual void init_coord(int nof_node);
00020 virtual void set_coord(int i, double x, double y, double z);
00022 virtual void finalize_coord();
00024 virtual void init_tet(int nof_tet);
00026 virtual void set_tet(int t, int id0, int id1, int id2, int id3, int material);
00028 virtual void finalize_tet();
00030 virtual void init_bc(int nof_bc_face);
00032 virtual void set_bc(int id0, int id1, int id2, int bc_id);
00034 virtual void finalize_bc(int nof_sym);
00035
00036 private:
00037 int _nof_node;
00038 int _nof_tet;
00039 int _nof_bc_face;
00040 int _bc_face_counter;
00041 int _nof_sym;
00042 double *_coord;
00043 int *_tet_node;
00044 int *_bc_face;
00045 int *_material;
00046
00047 hid_t file, points, tets, mats, edges;
00048 hid_t pointspace, tetspace, matspace, edgespace;
00049 hsize_t dimsf[2];
00050 herr_t status;
00051
00052 };
00053