[cig-commits] r9177 - cs/benchmark/cigma/trunk/src
luis at geodynamics.org
luis at geodynamics.org
Tue Jan 29 11:47:41 PST 2008
Author: luis
Date: 2008-01-29 11:47:41 -0800 (Tue, 29 Jan 2008)
New Revision: 9177
Modified:
cs/benchmark/cigma/trunk/src/HdfReader.cpp
cs/benchmark/cigma/trunk/src/HdfReader.h
Log:
Read datasets directly from HDF5 file in HdfReader class (no cache)
Modified: cs/benchmark/cigma/trunk/src/HdfReader.cpp
===================================================================
--- cs/benchmark/cigma/trunk/src/HdfReader.cpp 2008-01-29 19:47:39 UTC (rev 9176)
+++ cs/benchmark/cigma/trunk/src/HdfReader.cpp 2008-01-29 19:47:41 UTC (rev 9177)
@@ -32,69 +32,77 @@
// ---------------------------------------------------------------------------
-
void cigma::HdfReader::
-set_coordinates_path(const char *loc)
+get_coordinates(const char *loc, double **coordinates, int *nno, int *nsd)
{
- coords_path = loc;
-}
-
-void cigma::HdfReader::
-set_connectivity_path(const char *loc)
-{
- connect_path = loc;
-}
-
-void cigma::HdfReader::
-set_dataset_path(const char *loc)
-{
- dataset_path = loc;
-}
-
-// ---------------------------------------------------------------------------
-
-void cigma::HdfReader::
-get_coordinates(double **coordinates, int *nno, int *nsd)
-{
int rank;
- const char *path = coords_path.c_str();
- coords_id = h5io_dset_open(file_id, path, &coords_type, &rank, NULL, NULL);
+ hid_t type_id;
+ hid_t coords_id = h5io_dset_open(file_id, loc, &type_id, &rank, NULL, NULL);
assert(coords_id >= 0);
assert(rank == 2);
+ herr_t status = H5Dclose(coords_id);
int ierr;
- ierr = h5io_dset_read2(file_id, path, H5T_NATIVE_DOUBLE,
+ ierr = h5io_dset_read2(file_id, loc, H5T_NATIVE_DOUBLE,
(void **)coordinates, nno, nsd);
assert(ierr >= 0);
}
void cigma::HdfReader::
-get_connectivity(int **connectivity, int *nel, int *ndofs)
+get_connectivity(const char *loc, int **connectivity, int *nel, int *ndofs)
{
int rank;
- const char *path = connect_path.c_str();
- connect_id = h5io_dset_open(file_id, path, &connect_type, &rank, NULL, NULL);
+ hid_t type_id;
+ hid_t connect_id = h5io_dset_open(file_id, loc, &type_id, &rank, NULL, NULL);
assert(connect_id >= 0);
assert(rank == 2);
+ herr_t status = H5Dclose(connect_id);
int ierr;
- ierr = h5io_dset_read2(file_id, path, H5T_NATIVE_INT,
+ ierr = h5io_dset_read2(file_id, loc, H5T_NATIVE_INT,
(void **)connectivity, nel, ndofs);
}
void cigma::HdfReader::
-get_dataset(double **data, int *num, int *dim)
+get_dataset(const char *loc, double **data, int *num, int *dim)
{
int rank;
- const char *path = dataset_path.c_str();
- dataset_id = h5io_dset_open(file_id, path, &dataset_type, &rank, NULL, NULL);
+ hid_t type_id;
+ hid_t dataset_id = h5io_dset_open(file_id, loc, &type_id, &rank, NULL, NULL);
assert(dataset_id >= 0);
assert(rank == 2);
+ herr_t status = H5Dclose(dataset_id);
int ierr;
- ierr = h5io_dset_read2(file_id, path, H5T_NATIVE_DOUBLE,
+ ierr = h5io_dset_read2(file_id, loc, H5T_NATIVE_DOUBLE,
(void **)data, num, dim);
}
// ---------------------------------------------------------------------------
+
+void cigma::HdfReader::
+get_mesh(MeshPart *meshPart, const char *loc)
+{
+ // XXX: read coords_loc & connect_loc from metadata
+}
+
+void cigma::HdfReader::
+get_mesh(MeshPart *meshPart, const char *coords_loc, const char *connect_loc)
+{
+ assert(meshPart != 0);
+ get_coordinates(coords_loc, &(meshPart->coords), &(meshPart->nno), &(meshPart->nsd));
+ get_connectivity(connect_loc, &(meshPart->connect), &(meshPart->nel), &(meshPart->nel));
+}
+
+void cigma::HdfReader::
+get_dofs(DofHandler *dofHandler, const char *loc)
+{
+ assert(dofHandler != 0);
+ assert(dofHandler->meshPart != 0);
+ get_dataset(loc, &(dofHandler->dofs), &(dofHandler->nno), &(dofHandler->ndim));
+}
+
+
+
+// ---------------------------------------------------------------------------
Modified: cs/benchmark/cigma/trunk/src/HdfReader.h
===================================================================
--- cs/benchmark/cigma/trunk/src/HdfReader.h 2008-01-29 19:47:39 UTC (rev 9176)
+++ cs/benchmark/cigma/trunk/src/HdfReader.h 2008-01-29 19:47:41 UTC (rev 9177)
@@ -5,11 +5,18 @@
#include "hdf5.h"
#include "Reader.h"
+#include "Quadrature.h"
+#include "MeshPart.h"
+#include "DofHandler.h"
+#include "FE_Field.h"
+
+
namespace cigma
{
class HdfReader;
}
+
class cigma::HdfReader : public Reader
{
public:
@@ -17,32 +24,29 @@
~HdfReader();
public:
+ ReaderType getType() { return HDF_READER; }
+
+public:
void open(std::string filename);
void close();
public:
- void set_coordinates_path(const char *loc);
- void set_connectivity_path(const char *loc);
- void set_dataset_path(const char *loc);
+ void get_coordinates(const char *loc, double **coordinates, int *nno, int *nsd);
+ void get_connectivity(const char *loc, int **connectivity, int *nel, int *ndofs);
+ void get_dataset(const char *loc, double **data, int *num, int *dim);
public:
- void get_coordinates(double **coordinates, int *nno, int *nsd);
- void get_connectivity(int **connectivity, int *nel, int *ndofs);
- void get_dataset(double **data, int *num, int *dim);
+ void get_quadrature(Quadrature *quadrature, const char *loc);
+ void get_quadrature(Quadrature *quadrature, const char *points_loc, const char *weights_loc);
public:
- std::string coords_path;
- std::string connect_path;
- std::string dataset_path;
+ void get_field(FE_Field *field, const char *loc);
+ void get_mesh(MeshPart *meshPart, const char *coords_loc, const char *connect_loc);
+ void get_mesh(MeshPart *meshPart, const char *loc);
+ void get_dofs(DofHandler *dofHandler, const char *loc);
+public:
hid_t file_id;
- hid_t coords_id;
- hid_t connect_id;
- hid_t dataset_id;
-
- hid_t coords_type;
- hid_t connect_type;
- hid_t dataset_type;
};
More information about the cig-commits
mailing list