[cig-commits] r4281 - mc/3D/CitcomS/trunk/lib
luis at geodynamics.org
luis at geodynamics.org
Mon Aug 14 04:22:52 PDT 2006
Author: luis
Date: 2006-08-14 04:22:51 -0700 (Mon, 14 Aug 2006)
New Revision: 4281
Modified:
mc/3D/CitcomS/trunk/lib/Output_h5.c
mc/3D/CitcomS/trunk/lib/hdf5_related.h
Log:
Added step column to the /time table dataset.
Modified: mc/3D/CitcomS/trunk/lib/Output_h5.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Output_h5.c 2006-08-14 11:01:56 UTC (rev 4280)
+++ mc/3D/CitcomS/trunk/lib/Output_h5.c 2006-08-14 11:22:51 UTC (rev 4281)
@@ -932,20 +932,21 @@
long n;
double x;
- /* Modify dataset creation properties (enable chunking) */
- dcpl_id = H5Pcreate(H5P_DATASET_CREATE);
- status = H5Pset_chunk(dcpl_id, 1, &chunkdim);
-
- /* Create the dataspace */
- dataspace = H5Screate_simple(1, &dim, &maxdim);
-
/* Create the memory data type */
datatype = H5Tcreate(H5T_COMPOUND, sizeof(struct HDF5_TIME));
+ status = H5Tinsert(datatype, "step", HOFFSET(struct HDF5_TIME, step), H5T_NATIVE_INT);
status = H5Tinsert(datatype, "time", HOFFSET(struct HDF5_TIME, time), H5T_NATIVE_FLOAT);
status = H5Tinsert(datatype, "time_step", HOFFSET(struct HDF5_TIME, time_step), H5T_NATIVE_FLOAT);
status = H5Tinsert(datatype, "cpu", HOFFSET(struct HDF5_TIME, cpu), H5T_NATIVE_FLOAT);
status = H5Tinsert(datatype, "cpu_step", HOFFSET(struct HDF5_TIME, cpu_step), H5T_NATIVE_FLOAT);
+ /* Create the dataspace */
+ dataspace = H5Screate_simple(1, &dim, &maxdim);
+
+ /* Modify dataset creation properties (enable chunking) */
+ dcpl_id = H5Pcreate(H5P_DATASET_CREATE);
+ status = H5Pset_chunk(dcpl_id, 1, &chunkdim);
+
/* Create the dataset */
dataset = H5Dcreate(loc_id, "time", datatype, dataspace, dcpl_id);
@@ -959,7 +960,7 @@
set_attribute_string(dataset, "VERSION", "2.6");
n = 0;
- set_attribute(dataset, "NROWS", H5T_NATIVE_LONG, &n);
+ set_attribute(dataset, "NROWS", H5T_NATIVE_LONG, &n); // TODO: LONG or LLONG??
set_attribute_string(dataset, "FIELD_0_NAME", "time");
set_attribute_string(dataset, "FIELD_1_NAME", "time_step");
@@ -1578,6 +1579,7 @@
if(E->parallel.me == 0)
{
/* Prepare data */
+ row.step = cycles;
row.time = E->monitor.elapsed_time;
row.time_step = E->advection.timestep;
row.cpu = current_time - E->monitor.cpu_time_at_start;
@@ -1586,39 +1588,39 @@
/* Get dataset */
dataset = H5Dopen(E->hdf5.file_id, "time");
- /* Create property list for independent dataset write */
- dxpl_id = H5Pcreate(H5P_DATASET_XFER);
- status = H5Pset_dxpl_mpio(dxpl_id, H5FD_MPIO_INDEPENDENT);
-
/* Extend dataset */
- dim = cycles + 1;
+ dim = E->hdf5.count + 1;
status = H5Dextend(dataset, &dim);
- /* Get file dataspace */
- filespace = H5Dget_space(dataset);
+ /* Get datatype */
+ datatype = H5Dget_type(dataset);
/* Define memory dataspace */
dim = 1;
dataspace = H5Screate_simple(1, &dim, NULL);
- /* Get datatype */
- datatype = H5Dget_type(dataset);
+ /* Get file dataspace */
+ filespace = H5Dget_space(dataset);
- /* Select hyperslab */
+ /* Select hyperslab in file dataspace */
+ offset = E->hdf5.count;
count = 1;
- offset = cycles;
status = H5Sselect_hyperslab(filespace, H5S_SELECT_SET,
&offset, NULL, &count, NULL);
+ /* Create property list for independent dataset write */
+ dxpl_id = H5Pcreate(H5P_DATASET_XFER);
+ status = H5Pset_dxpl_mpio(dxpl_id, H5FD_MPIO_INDEPENDENT);
+
/* Write to hyperslab selection */
status = H5Dwrite(dataset, datatype, dataspace, filespace,
dxpl_id, &row);
/* Release resources */
status = H5Pclose(dxpl_id);
+ status = H5Sclose(filespace);
+ status = H5Sclose(dataspace);
status = H5Tclose(datatype);
- status = H5Sclose(dataspace);
- status = H5Sclose(filespace);
status = H5Dclose(dataset);
}
}
Modified: mc/3D/CitcomS/trunk/lib/hdf5_related.h
===================================================================
--- mc/3D/CitcomS/trunk/lib/hdf5_related.h 2006-08-14 11:01:56 UTC (rev 4280)
+++ mc/3D/CitcomS/trunk/lib/hdf5_related.h 2006-08-14 11:22:51 UTC (rev 4281)
@@ -40,6 +40,7 @@
struct HDF5_TIME
{
+ int step;
float time;
float time_step;
float cpu;
More information about the cig-commits
mailing list