[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