[cig-commits] r4209 - mc/3D/CitcomS/trunk/lib

luis at geodynamics.org luis at geodynamics.org
Wed Aug 2 18:42:29 PDT 2006


Author: luis
Date: 2006-08-02 18:42:29 -0700 (Wed, 02 Aug 2006)
New Revision: 4209

Modified:
   mc/3D/CitcomS/trunk/lib/Output_h5.c
Log:
Renamed h5create_array() to h5create_dataset() and made sure that
the datasets created by that function are compatibles with PyTables.


Modified: mc/3D/CitcomS/trunk/lib/Output_h5.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Output_h5.c	2006-08-03 01:30:32 UTC (rev 4208)
+++ mc/3D/CitcomS/trunk/lib/Output_h5.c	2006-08-03 01:42:29 UTC (rev 4209)
@@ -68,13 +68,13 @@
                             const char *name,
                             size_t size_hint);
 
-static void h5create_array(hid_t loc_id,
-                           const char *name,
-                           hid_t type_id,
-                           int rank,
-                           hsize_t *dims,
-                           hsize_t *maxdims,
-                           hsize_t *chunkdims);
+static void h5create_dataset(hid_t loc_id,
+                             const char *name,
+                             hid_t type_id,
+                             int rank,
+                             hsize_t *dims,
+                             hsize_t *maxdims,
+                             hsize_t *chunkdims);
 
 static void h5create_field(hid_t loc_id,
                            const char *name,
@@ -441,41 +441,40 @@
     return cap_group;
 }
 
-static void h5create_array(hid_t loc_id,
-                           const char *name,
-                           hid_t type_id,
-                           int rank,
-                           hsize_t *dims,
-                           hsize_t *maxdims,
-                           hsize_t *chunkdims)
+static void h5create_dataset(hid_t loc_id,
+                             const char *name,
+                             hid_t type_id,
+                             int rank,
+                             hsize_t *dims,
+                             hsize_t *maxdims,
+                             hsize_t *chunkdims)
 {
-    hid_t filespace;    /* file dataspace identifier */
     hid_t dcpl_id;      /* dataset creation property list identifier */
+    hid_t dataspace;    /* file dataspace identifier */
     hid_t dataset;      /* dataset identifier */
-
     herr_t status;
 
     ///* DEBUG
-    printf("h5create_array()\n");
+    printf("h5create_dataset()\n");
     printf("\tname=\"%s\"\n", name);
     printf("\tdims={%d,%d,%d,%d,%d}\n",
         (int)dims[0], (int)dims[1], (int)dims[2], (int)dims[3], (int)dims[4]);
     if(maxdims != NULL) 
-        printf("maxdims={%d,%d,%d,%d,%d}\n",
+        printf("\tmaxdims={%d,%d,%d,%d,%d}\n",
             (int)maxdims[0], (int)maxdims[1], (int)maxdims[2],
             (int)maxdims[3], (int)maxdims[4]);
     else
-        printf("maxdims=NULL\n");
+        printf("\tmaxdims=NULL\n");
     if(chunkdims != NULL)
-        printf("chunkdims={%d,%d,%d,%d,%d}\n",
+        printf("\tchunkdims={%d,%d,%d,%d,%d}\n",
             (int)chunkdims[0], (int)chunkdims[1], (int)chunkdims[2],
             (int)chunkdims[3], (int)chunkdims[4]);
     else
-        printf("chunkdims=NULL\n");
+        printf("\tchunkdims=NULL\n");
     // */
 
     /* create the dataspace for the dataset */
-    filespace = H5Screate_simple(rank, dims, maxdims);
+    dataspace = H5Screate_simple(rank, dims, maxdims);
     
     dcpl_id = H5P_DEFAULT;
     if (chunkdims != NULL)
@@ -489,14 +488,20 @@
     /* create the dataset */
     dataset = H5Dcreate(loc_id, name, type_id, filespace, dcpl_id);
 
-    /* TODO
-     *  1. Add attribute strings necessary for PyTables compatibility
-     */
+    /* Write necessary attributes for PyTables compatibility */
+    set_attribute(dataset, "TITLE", "CitcomS HDF5 dataset"); //TODO: elsewhere?
+    set_attribute(dataset, "CLASS", "ARRAY");
+    set_attribute(dataset, "FLAVOR", "numpy");
+    set_attribute(dataset, "VERSION", "2.3");
 
     /* release resources */
-    status = H5Pclose(dcpl_id);
-    status = H5Sclose(filespace);
+    if(chunkdims != NULL)
+    {
+        status = H5Pclose(dcpl_id);
+    }
+    status = H5Sclose(dataspace);
     status = H5Dclose(dataset);
+    return;
 }
 
 static void h5write_array_hyperslab(hid_t dset_id,



More information about the cig-commits mailing list