[cig-commits] [commit] master: Change HDF5 output to use FieldDesc class (b90b5b7)
cig_noreply at geodynamics.org
cig_noreply at geodynamics.org
Wed Oct 8 17:05:10 PDT 2014
Repository : https://github.com/geodynamics/vc
On branch : master
Link : https://github.com/geodynamics/vc/compare/23464fca3efa2b6ad7ee0ce8f60c225b18b49741...e4325192ad1118379f46ba66899cb98143d09e04
>---------------------------------------------------------------
commit b90b5b7ade9d2139d65392d57f20dd2f8393ba05
Author: Eric Heien <emheien at ucdavis.edu>
Date: Mon Sep 22 16:18:51 2014 -0700
Change HDF5 output to use FieldDesc class
>---------------------------------------------------------------
b90b5b7ade9d2139d65392d57f20dd2f8393ba05
src/io/EventOutput.h | 4 -
src/io/HDF5Data.cpp | 268 +++++++++++++++++++++++++++++++++++----------------
src/io/HDF5Data.h | 32 ------
3 files changed, 184 insertions(+), 120 deletions(-)
diff --git a/src/io/EventOutput.h b/src/io/EventOutput.h
index bd6199e..8c03868 100644
--- a/src/io/EventOutput.h
+++ b/src/io/EventOutput.h
@@ -30,10 +30,6 @@
#define PAUSE_FILE_NAME "pause_vc"
-char **event_fields = { "# Event number", "# Event year", "# Event trigger element ID", "# Event magnitude", "# Total initial shear stress of elements involved in event (Pascals)", "# Total final shear stress of elements involved in event (Pascals)", "# Total initial normal stress of elements involved in event (Pascals)", "# Total final normal stress of elements involved in event (Pascals)"};
-
-char **sweep_fields = { "# Event number corresponding to this sweep", "# Sweep number", "# Element ID", "# Slip on element in this sweep (meters)", "# Area of element (square meters)", "# Element Lame mu parameter (Pascals)", "# Shear stress of element before sweep (Pascals)", "# Shear stress of element after sweep (Pascals)", "# Normal stress of element before sweep (Pascals)", "# Normal stress of element after sweep (Pascals)" };
-
/*!
Manages the HDF5 format data output for VC program.
*/
diff --git a/src/io/HDF5Data.cpp b/src/io/HDF5Data.cpp
index 4033d2f..26ca7b6 100644
--- a/src/io/HDF5Data.cpp
+++ b/src/io/HDF5Data.cpp
@@ -19,6 +19,7 @@
// DEALINGS IN THE SOFTWARE.
#include "HDF5Data.h"
+#include "QuakeLibIO.h"
#include <fcntl.h>
#include <sys/mman.h>
#include <stdlib.h>
@@ -419,90 +420,189 @@ HDF5DataWriter::HDF5DataWriter(const std::string &hdf5_file_name) : HDF5Data() {
void HDF5Data::createH5Handles(void) {
hsize_t dimsf[2];
- event_field_names[0] = EVENT_NUM_HDF5;
- event_field_names[1] = EVENT_YEAR_HDF5;
- event_field_names[2] = EVENT_TRIGGER_HDF5;
- event_field_names[3] = EVENT_MAGNITUDE_HDF5;
- event_field_names[4] = EVENT_SHEAR_INIT_HDF5;
- event_field_names[5] = EVENT_NORMAL_INIT_HDF5;
- event_field_names[6] = EVENT_SHEAR_FINAL_HDF5;
- event_field_names[7] = EVENT_NORMAL_FINAL_HDF5;
- event_field_names[8] = EVENT_START_SWEEP_HDF5;
- event_field_names[9] = EVENT_END_SWEEP_HDF5;
-
- event_field_offsets[0] = HOFFSET(EventInfo, event_number);
- event_field_offsets[1] = HOFFSET(EventInfo, event_year);
- event_field_offsets[2] = HOFFSET(EventInfo, event_trigger);
- event_field_offsets[3] = HOFFSET(EventInfo, event_magnitude);
- event_field_offsets[4] = HOFFSET(EventInfo, init_shear);
- event_field_offsets[5] = HOFFSET(EventInfo, init_normal);
- event_field_offsets[6] = HOFFSET(EventInfo, final_shear);
- event_field_offsets[7] = HOFFSET(EventInfo, final_normal);
- event_field_offsets[8] = HOFFSET(EventInfo, start_sweep_rec);
- event_field_offsets[9] = HOFFSET(EventInfo, end_sweep_rec);
-
- event_field_types[0] = H5T_NATIVE_UINT;
- event_field_types[1] = H5T_NATIVE_DOUBLE;
- event_field_types[2] = H5T_NATIVE_UINT;
- event_field_types[3] = H5T_NATIVE_DOUBLE;
- event_field_types[4] = H5T_NATIVE_DOUBLE;
- event_field_types[5] = H5T_NATIVE_DOUBLE;
- event_field_types[6] = H5T_NATIVE_DOUBLE;
- event_field_types[7] = H5T_NATIVE_DOUBLE;
- event_field_types[8] = H5T_NATIVE_UINT;
- event_field_types[9] = H5T_NATIVE_UINT;
-
- event_field_sizes[0] = sizeof(unsigned int);
- event_field_sizes[1] = sizeof(double);
- event_field_sizes[2] = sizeof(BlockID);
- event_field_sizes[3] = sizeof(double);
- event_field_sizes[4] = sizeof(double);
- event_field_sizes[5] = sizeof(double);
- event_field_sizes[6] = sizeof(double);
- event_field_sizes[7] = sizeof(double);
- event_field_sizes[8] = sizeof(unsigned int);
- event_field_sizes[9] = sizeof(unsigned int);
-
- sweep_field_names[0] = SWEEP_EVENT_NUM_HDF5;
- sweep_field_names[1] = SWEEP_NUM_HDF5;
- sweep_field_names[2] = SWEEP_BLOCK_ID_HDF5;
- sweep_field_names[3] = SWEEP_SLIP_HDF5;
- sweep_field_names[4] = SWEEP_AREA_HDF5;
- sweep_field_names[5] = SWEEP_MU_HDF5;
- sweep_field_names[6] = SWEEP_SHEAR_INIT_HDF5;
- sweep_field_names[7] = SWEEP_NORMAL_INIT_HDF5;
- sweep_field_names[8] = SWEEP_SHEAR_FINAL_HDF5;
- sweep_field_names[9] = SWEEP_NORMAL_FINAL_HDF5;
- sweep_field_offsets[0] = HOFFSET(EventSweepInfo, event_number);
- sweep_field_offsets[1] = HOFFSET(EventSweepInfo, sweep_num);
- sweep_field_offsets[2] = HOFFSET(EventSweepInfo, block_id);
- sweep_field_offsets[3] = HOFFSET(EventSweepInfo, block_slip);
- sweep_field_offsets[4] = HOFFSET(EventSweepInfo, block_area);
- sweep_field_offsets[5] = HOFFSET(EventSweepInfo, block_mu);
- sweep_field_offsets[6] = HOFFSET(EventSweepInfo, shear_init);
- sweep_field_offsets[7] = HOFFSET(EventSweepInfo, normal_init);
- sweep_field_offsets[8] = HOFFSET(EventSweepInfo, shear_final);
- sweep_field_offsets[9] = HOFFSET(EventSweepInfo, normal_final);
- sweep_field_types[0] = H5T_NATIVE_UINT;
- sweep_field_types[1] = H5T_NATIVE_UINT;
- sweep_field_types[2] = H5T_NATIVE_UINT;
- sweep_field_types[3] = H5T_NATIVE_DOUBLE;
- sweep_field_types[4] = H5T_NATIVE_DOUBLE;
- sweep_field_types[5] = H5T_NATIVE_DOUBLE;
- sweep_field_types[6] = H5T_NATIVE_DOUBLE;
- sweep_field_types[7] = H5T_NATIVE_DOUBLE;
- sweep_field_types[8] = H5T_NATIVE_DOUBLE;
- sweep_field_types[9] = H5T_NATIVE_DOUBLE;
- sweep_field_sizes[0] = sizeof(unsigned int);
- sweep_field_sizes[1] = sizeof(unsigned int);
- sweep_field_sizes[2] = sizeof(BlockID);
- sweep_field_sizes[3] = sizeof(double);
- sweep_field_sizes[4] = sizeof(double);
- sweep_field_sizes[5] = sizeof(double);
- sweep_field_sizes[6] = sizeof(double);
- sweep_field_sizes[7] = sizeof(double);
- sweep_field_sizes[8] = sizeof(double);
- sweep_field_sizes[9] = sizeof(double);
+ std::vector<quakelib::FieldDesc> descs;
+ quakelib::FieldDesc field_desc;
+
+ field_desc.name = "event_number";
+ field_desc.details = "Event number";
+#ifdef HDF5_FOUND
+ field_desc.offset = HOFFSET(EventInfo, event_number);
+ field_desc.type = H5T_NATIVE_UINT;
+ field_desc.size = sizeof(unsigned int);
+#endif
+ descs.push_back(field_desc);
+
+ field_desc.name = "event_year";
+ field_desc.details = "Event year";
+#ifdef HDF5_FOUND
+ field_desc.offset = HOFFSET(EventInfo, event_year);
+ field_desc.type = H5T_NATIVE_DOUBLE;
+ field_desc.size = sizeof(double);
+#endif
+ descs.push_back(field_desc);
+
+ field_desc.name = "event_trigger";
+ field_desc.details = "Event trigger element ID";
+#ifdef HDF5_FOUND
+ field_desc.offset = HOFFSET(EventInfo, event_trigger);
+ field_desc.type = H5T_NATIVE_UINT;
+ field_desc.size = sizeof(BlockID);
+#endif
+ descs.push_back(field_desc);
+
+ field_desc.name = "event_magnitude";
+ field_desc.details = "Event magnitude";
+#ifdef HDF5_FOUND
+ field_desc.offset = HOFFSET(EventInfo, event_magnitude);
+ field_desc.type = H5T_NATIVE_DOUBLE;
+ field_desc.size = sizeof(double);
+#endif
+ descs.push_back(field_desc);
+
+ field_desc.name = "event_shear_init";
+ field_desc.details = "Total initial shear stress of elements involved in event (Pascals)";
+#ifdef HDF5_FOUND
+ field_desc.offset = HOFFSET(EventInfo, init_shear);
+ field_desc.type = H5T_NATIVE_DOUBLE;
+ field_desc.size = sizeof(double);
+#endif
+ descs.push_back(field_desc);
+
+ field_desc.name = "event_shear_final";
+ field_desc.details = "Total final shear stress of elements involved in event (Pascals)";
+#ifdef HDF5_FOUND
+ field_desc.offset = HOFFSET(EventInfo, final_shear);
+ field_desc.type = H5T_NATIVE_DOUBLE;
+ field_desc.size = sizeof(double);
+#endif
+ descs.push_back(field_desc);
+
+ field_desc.name = "event_normal_init";
+ field_desc.details = "Total initial normal stress of elements involved in event (Pascals)";
+#ifdef HDF5_FOUND
+ field_desc.offset = HOFFSET(EventInfo, init_normal);
+ field_desc.type = H5T_NATIVE_DOUBLE;
+ field_desc.size = sizeof(double);
+#endif
+ descs.push_back(field_desc);
+
+ field_desc.name = "event_normal_final";
+ field_desc.details = "Total final normal stress of elements involved in event (Pascals)";
+#ifdef HDF5_FOUND
+ field_desc.offset = HOFFSET(EventInfo, final_normal);
+ field_desc.type = H5T_NATIVE_DOUBLE;
+ field_desc.size = sizeof(double);
+#endif
+ descs.push_back(field_desc);
+
+ field_desc.name = "start_sweep_rec";
+ field_desc.details = "Starting record number of the sweeps comprising this event.";
+#ifdef HDF5_FOUND
+ field_desc.offset = HOFFSET(EventInfo, start_sweep_rec);
+ field_desc.type = H5T_NATIVE_UINT;
+ field_desc.size = sizeof(unsigned int);
+#endif
+ descs.push_back(field_desc);
+
+ field_desc.name = "end_sweep_rec";
+ field_desc.details = "Ending record number of the sweeps comprising this event.";
+#ifdef HDF5_FOUND
+ field_desc.offset = HOFFSET(EventInfo, end_sweep_rec);
+ field_desc.type = H5T_NATIVE_UINT;
+ field_desc.size = sizeof(unsigned int);
+#endif
+ descs.push_back(field_desc);
+
+ // Sweep table definition
+ field_desc.name = "event_number";
+ field_desc.details = "Event number corresponding to this sweep.";
+#ifdef HDF5_FOUND
+ field_desc.offset = HOFFSET(EventSweepInfo, event_number);
+ field_desc.type = H5T_NATIVE_UINT;
+ field_desc.size = sizeof(unsigned int);
+#endif
+ descs.push_back(field_desc);
+
+ field_desc.name = "sweep_number";
+ field_desc.details = "Sweep number.";
+#ifdef HDF5_FOUND
+ field_desc.offset = HOFFSET(EventSweepInfo, sweep_number);
+ field_desc.type = H5T_NATIVE_UINT;
+ field_desc.size = sizeof(unsigned int);
+#endif
+ descs.push_back(field_desc);
+
+ field_desc.name = "block_id";
+ field_desc.details = "Element ID.";
+#ifdef HDF5_FOUND
+ field_desc.offset = HOFFSET(EventSweepInfo, block_id);
+ field_desc.type = H5T_NATIVE_UINT;
+ field_desc.size = sizeof(unsigned int);
+#endif
+ descs.push_back(field_desc);
+
+ field_desc.name = "block_slip";
+ field_desc.details = "Slip on element in this sweep (meters).";
+#ifdef HDF5_FOUND
+ field_desc.offset = HOFFSET(EventSweepInfo, block_slip);
+ field_desc.type = H5T_NATIVE_DOUBLE;
+ field_desc.size = sizeof(double);
+#endif
+ descs.push_back(field_desc);
+
+ field_desc.name = "block_area";
+ field_desc.details = "Area of element (square meters).";
+#ifdef HDF5_FOUND
+ field_desc.offset = HOFFSET(EventSweepInfo, block_area);
+ field_desc.type = H5T_NATIVE_DOUBLE;
+ field_desc.size = sizeof(double);
+#endif
+ descs.push_back(field_desc);
+
+ field_desc.name = "block_mu";
+ field_desc.details = "Element Lame mu parameter (Pascals).";
+#ifdef HDF5_FOUND
+ field_desc.offset = HOFFSET(EventSweepInfo, block_mu);
+ field_desc.type = H5T_NATIVE_DOUBLE;
+ field_desc.size = sizeof(double);
+#endif
+ descs.push_back(field_desc);
+
+ field_desc.name = "shear_init";
+ field_desc.details = "Shear stress of element before sweep (Pascals).";
+#ifdef HDF5_FOUND
+ field_desc.offset = HOFFSET(EventSweepInfo, shear_init);
+ field_desc.type = H5T_NATIVE_DOUBLE;
+ field_desc.size = sizeof(double);
+#endif
+ descs.push_back(field_desc);
+
+ field_desc.name = "shear_final";
+ field_desc.details = "Shear stress of element after sweep (Pascals).";
+#ifdef HDF5_FOUND
+ field_desc.offset = HOFFSET(EventSweepInfo, shear_final);
+ field_desc.type = H5T_NATIVE_DOUBLE;
+ field_desc.size = sizeof(double);
+#endif
+ descs.push_back(field_desc);
+
+ field_desc.name = "normal_init";
+ field_desc.details = "Normal stress of element before sweep (Pascals).";
+#ifdef HDF5_FOUND
+ field_desc.offset = HOFFSET(EventSweepInfo, normal_init);
+ field_desc.type = H5T_NATIVE_DOUBLE;
+ field_desc.size = sizeof(double);
+#endif
+ descs.push_back(field_desc);
+
+ field_desc.name = "normal_normal";
+ field_desc.details = "Normal stress of element after sweep (Pascals).";
+#ifdef HDF5_FOUND
+ field_desc.offset = HOFFSET(EventSweepInfo, normal_final);
+ field_desc.type = H5T_NATIVE_DOUBLE;
+ field_desc.size = sizeof(double);
+#endif
+ descs.push_back(field_desc);
// Create dataspace for pairs of values
dimsf[0] = 2;
diff --git a/src/io/HDF5Data.h b/src/io/HDF5Data.h
index ed0f4c6..a59c17e 100644
--- a/src/io/HDF5Data.h
+++ b/src/io/HDF5Data.h
@@ -49,30 +49,10 @@
// Event info related definitions
#define EVENT_TABLE_HDF5 "event_table"
#define EVENT_NUM_ENTRIES_HDF5 10
-#define EVENT_NUM_HDF5 "event_number"
-#define EVENT_YEAR_HDF5 "event_year"
-#define EVENT_TRIGGER_HDF5 "event_trigger"
-#define EVENT_MAGNITUDE_HDF5 "event_magnitude"
-#define EVENT_SHEAR_INIT_HDF5 "event_shear_init"
-#define EVENT_NORMAL_INIT_HDF5 "event_normal_init"
-#define EVENT_SHEAR_FINAL_HDF5 "event_shear_final"
-#define EVENT_NORMAL_FINAL_HDF5 "event_normal_final"
-#define EVENT_START_SWEEP_HDF5 "start_sweep_rec"
-#define EVENT_END_SWEEP_HDF5 "end_sweep_rec"
// Event sweeps table definitions
#define SWEEP_TABLE_HDF5 "event_sweep_table"
#define SWEEP_NUM_ENTRIES_HDF5 10
-#define SWEEP_EVENT_NUM_HDF5 "event_number"
-#define SWEEP_NUM_HDF5 "sweep_num"
-#define SWEEP_BLOCK_ID_HDF5 "block_id"
-#define SWEEP_SLIP_HDF5 "slip"
-#define SWEEP_AREA_HDF5 "area"
-#define SWEEP_MU_HDF5 "mu"
-#define SWEEP_SHEAR_INIT_HDF5 "shear_init"
-#define SWEEP_SHEAR_FINAL_HDF5 "shear_final"
-#define SWEEP_NORMAL_INIT_HDF5 "normal_init"
-#define SWEEP_NORMAL_FINAL_HDF5 "normal_final"
// State checkpoint table definitions
#define CHECKPOINT_STATE_HDF5 "checkpoint_state"
@@ -189,18 +169,6 @@ class HDF5Data {
// Handles to data space specifications
hid_t pair_val_dataspace;
- // Names, types, offsets and sizes for event table
- const char *event_field_names[EVENT_NUM_ENTRIES_HDF5];
- size_t event_field_offsets[EVENT_NUM_ENTRIES_HDF5];
- hid_t event_field_types[EVENT_NUM_ENTRIES_HDF5];
- size_t event_field_sizes[EVENT_NUM_ENTRIES_HDF5];
-
- // Names, types, offsets and sizes for event sweep table
- const char *sweep_field_names[SWEEP_NUM_ENTRIES_HDF5];
- size_t sweep_field_offsets[SWEEP_NUM_ENTRIES_HDF5];
- hid_t sweep_field_types[SWEEP_NUM_ENTRIES_HDF5];
- size_t sweep_field_sizes[SWEEP_NUM_ENTRIES_HDF5];
-
// Values read from shared memory (pointers are set to within shared memory segment)
unsigned int num_blocks;
More information about the CIG-COMMITS
mailing list