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

luis at geodynamics.org luis at geodynamics.org
Wed Aug 23 16:16:36 PDT 2006


Author: luis
Date: 2006-08-23 16:16:35 -0700 (Wed, 23 Aug 2006)
New Revision: 4404

Modified:
   mc/3D/CitcomS/trunk/lib/Output_h5.c
   mc/3D/CitcomS/trunk/lib/hdf5_related.h
Log:
1. Grouped horizontal average data into its own HDF5 group.
2. All datasets are referenced using relative paths (to its own cap group).


Modified: mc/3D/CitcomS/trunk/lib/Output_h5.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Output_h5.c	2006-08-23 19:39:30 UTC (rev 4403)
+++ mc/3D/CitcomS/trunk/lib/Output_h5.c	2006-08-23 23:16:35 UTC (rev 4404)
@@ -192,6 +192,7 @@
     hid_t cap_group;    /* group identifier for a given cap */
     hid_t surf_group;   /* group identifier for top cap surface */
     hid_t botm_group;   /* group identifier for bottom cap surface */
+    hid_t avg_group;    /* group identifier for horizontal averages */
 
     hid_t dtype;        /* datatype for dataset creation */
 
@@ -284,11 +285,11 @@
         if (E->output.surf == 1)
         {
             surf_group = h5create_group(cap_group, "surf", (size_t)0);
-            E->hdf5.cap_surf_groups[cap] = surf_group;
             h5create_surf_coord(surf_group, E->hdf5.const_vector2d);
             h5create_surf_velocity(surf_group, E->hdf5.vector2d);
             h5create_surf_heatflux(surf_group, E->hdf5.scalar2d);
             h5create_surf_topography(surf_group, E->hdf5.scalar2d);
+            status = H5Gclose(surf_group);
         }
 
         /********************************************************************
@@ -297,12 +298,11 @@
         if (E->output.botm == 1)
         {
             botm_group = h5create_group(cap_group, "botm", (size_t)0);
-            E->hdf5.cap_botm_groups[cap] = botm_group;
-
             h5create_surf_coord(botm_group, E->hdf5.const_vector2d);
             h5create_surf_velocity(botm_group, E->hdf5.vector2d);
             h5create_surf_heatflux(botm_group, E->hdf5.scalar2d);
             h5create_surf_topography(botm_group, E->hdf5.scalar2d);
+            status = H5Gclose(avg_group);
         }
 
         /********************************************************************
@@ -310,9 +310,11 @@
          ********************************************************************/
         if(E->output.average == 1)
         {
-            h5create_have_temperature(cap_group, E->hdf5.scalar1d);
-            h5create_have_vxy_rms(cap_group, E->hdf5.scalar1d);
-            h5create_have_vz_rms(cap_group, E->hdf5.scalar1d);
+            avg_group = h5create_group(avg_group, "average", (size_t)0);
+            h5create_have_temperature(avg_group, E->hdf5.scalar1d);
+            h5create_have_vxy_rms(avg_group, E->hdf5.scalar1d);
+            h5create_have_vz_rms(avg_group, E->hdf5.scalar1d);
+            status = H5Gclose(avg_group);
         }
 
         /* remember HDF5 group identifier for each cap */
@@ -350,13 +352,7 @@
 
     /* close cap groups */
     for (i = 0; i < E->sphere.caps; i++)
-    {
         status = H5Gclose(E->hdf5.cap_groups[i]);
-        if(E->output.surf == 1)
-            status = H5Gclose(E->hdf5.cap_surf_groups[i]);
-        if(E->output.botm == 1)
-            status = H5Gclose(E->hdf5.cap_botm_groups[i]);
-    }
 
     /* close file */
     status = H5Fclose(E->hdf5.file_id);
@@ -836,7 +832,7 @@
 
 static herr_t h5create_have_temperature(hid_t loc_id, field_t *field)
 {
-    h5create_dataset(loc_id, "T_avg", "temperature horizontal average",
+    h5create_dataset(loc_id, "temperature", "temperature horizontal average",
                      field->dtype, field->rank, field->dims, field->maxdims,
                      field->chunkdims);
     return 0;
@@ -844,7 +840,8 @@
 
 static herr_t h5create_have_vxy_rms(hid_t loc_id, field_t *field)
 {
-    h5create_dataset(loc_id, "Vxy_rms", "Vxy horizontal average (rms)",
+    h5create_dataset(loc_id, "horizontal_velocity",
+                     "Vxy horizontal average (rms)",
                      field->dtype, field->rank, field->dims, field->maxdims,
                      field->chunkdims);
     return 0;
@@ -852,7 +849,8 @@
 
 static herr_t h5create_have_vz_rms(hid_t loc_id, field_t *field)
 {
-    h5create_dataset(loc_id, "Vz_rms", "Vz horizontal average (rms)",
+    h5create_dataset(loc_id, "vertical_velocity",
+                     "Vz horizontal average (rms)",
                      field->dtype, field->rank, field->dims, field->maxdims,
                      field->chunkdims);
     return 0;
@@ -1444,8 +1442,8 @@
                 field->data[2*m+1] = E->sx[1][2][n+1];
             }
         }
-        cap_group = E->hdf5.cap_surf_groups[E->hdf5.capid];
-        dataset   = H5Dopen(cap_group, "coord");
+        cap_group = E->hdf5.cap_groups[E->hdf5.capid];
+        dataset   = H5Dopen(cap_group, "surf/coord");
         status    = h5write_field(dataset, field);
         status    = H5Dclose(dataset);
     }
@@ -1463,8 +1461,8 @@
                 field->data[2*m+1] = E->sx[1][2][n+1];
             }
         }
-        cap_group = E->hdf5.cap_botm_groups[E->hdf5.capid];
-        dataset   = H5Dopen(cap_group, "coord");
+        cap_group = E->hdf5.cap_groups[E->hdf5.capid];
+        dataset   = H5Dopen(cap_group, "botm/coord");
         status    = h5write_field(dataset, field);
         status    = H5Dclose(dataset);
     }
@@ -1509,41 +1507,43 @@
     /* extend all datasets -- collective I/O call */
     for(cap = 0; cap < E->sphere.caps; cap++)
     {
+        cap_group = E->hdf5.cap_groups[cap];
+
         if (E->output.surf == 1)
         {
-            cap_group = E->hdf5.cap_surf_groups[cap];
-
-            dataset = H5Dopen(cap_group, "velocity");
+            dataset = H5Dopen(cap_group, "surf/velocity");
             status  = H5Dextend(dataset, vector->dims);
             status  = H5Dclose(dataset);
 
-            dataset = H5Dopen(cap_group, "heatflux");
+            dataset = H5Dopen(cap_group, "surf/heatflux");
             status  = H5Dextend(dataset, scalar->dims);
             status  = H5Dclose(dataset);
             
-            dataset = H5Dopen(cap_group, "topography");
+            dataset = H5Dopen(cap_group, "surf/topography");
             status  = H5Dextend(dataset, scalar->dims);
             status  = H5Dclose(dataset);
         }
         if (E->output.botm == 1)
         {
-            cap_group = E->hdf5.cap_botm_groups[cap];
-
-            dataset = H5Dopen(cap_group, "velocity");
+            dataset = H5Dopen(cap_group, "botm/velocity");
             status  = H5Dextend(dataset, vector->dims);
             status  = H5Dclose(dataset);
 
-            dataset = H5Dopen(cap_group, "heatflux");
+            dataset = H5Dopen(cap_group, "botm/heatflux");
             status  = H5Dextend(dataset, scalar->dims);
             status  = H5Dclose(dataset);
             
-            dataset = H5Dopen(cap_group, "topography");
+            dataset = H5Dopen(cap_group, "botm/topography");
             status  = H5Dextend(dataset, scalar->dims);
             status  = H5Dclose(dataset);
         }
     }
 
 
+    /* current cap group */
+    cap_group = E->hdf5.cap_groups[E->hdf5.capid];
+
+
     /*
      * top surface
      */
@@ -1553,10 +1553,7 @@
         /* radial index */
         k = nz-1;
 
-        /* current cap group */
-        cap_group = E->hdf5.cap_surf_groups[E->hdf5.capid];
 
-
         /* velocity data */
         for(i = 0; i < mx; i++)
         {
@@ -1568,7 +1565,7 @@
                 vector->data[2*m+1] = E->sphere.cap[1].V[2][n+1];
             }
         }
-        dataset = H5Dopen(cap_group, "velocity");
+        dataset = H5Dopen(cap_group, "surf/velocity");
         status  = h5write_field(dataset, vector);
         status  = H5Dclose(dataset);
 
@@ -1583,7 +1580,7 @@
                 scalar->data[m] = E->slice.shflux[1][n+1];
             }
         }
-        dataset = H5Dopen(cap_group, "heatflux");
+        dataset = H5Dopen(cap_group, "surf/heatflux");
         status  = h5write_field(dataset, scalar);
         status  = H5Dclose(dataset);
 
@@ -1604,7 +1601,7 @@
                 scalar->data[m] = topo[i];
             }
         }
-        dataset = H5Dopen(cap_group, "topography");
+        dataset = H5Dopen(cap_group, "surf/topography");
         status  = h5write_field(dataset, scalar);
         status  = H5Dclose(dataset);
     }
@@ -1619,10 +1616,7 @@
         /* radial index */
         k = 0;
 
-        /* current cap group */
-        cap_group = E->hdf5.cap_botm_groups[E->hdf5.capid];
 
-
         /* velocity data */
         for(i = 0; i < mx; i++)
         {
@@ -1634,7 +1628,7 @@
                 vector->data[2*m+1] = E->sphere.cap[1].V[2][n+1];
             }
         }
-        dataset = H5Dopen(cap_group, "velocity");
+        dataset = H5Dopen(cap_group, "botm/velocity");
         status  = h5write_field(dataset, vector);
         status  = H5Dclose(dataset);
 
@@ -1649,7 +1643,7 @@
                 scalar->data[m] = E->slice.bhflux[1][n+1];
             }
         }
-        dataset = H5Dopen(cap_group, "heatflux");
+        dataset = H5Dopen(cap_group, "botm/heatflux");
         status  = h5write_field(dataset, scalar);
         status  = H5Dclose(dataset);
 
@@ -1665,7 +1659,7 @@
                 scalar->data[m] = topo[i];
             }
         }
-        dataset = H5Dopen(cap_group, "topography");
+        dataset = H5Dopen(cap_group, "botm/topography");
         status  = h5write_field(dataset, scalar);
         status  = H5Dclose(dataset);
     }
@@ -1741,15 +1735,15 @@
     {
         cap_group = E->hdf5.cap_groups[cap];
 
-        dataset = H5Dopen(cap_group, "T_avg");
+        dataset = H5Dopen(cap_group, "average/temperature");
         status  = H5Dextend(dataset, field->dims);
         status  = H5Dclose(dataset);
 
-        dataset = H5Dopen(cap_group, "Vxy_rms");
+        dataset = H5Dopen(cap_group, "average/horizontal_velocity");
         status  = H5Dextend(dataset, field->dims);
         status  = H5Dclose(dataset);
 
-        dataset = H5Dopen(cap_group, "Vz_rms");
+        dataset = H5Dopen(cap_group, "average/vertical_velocity");
         status  = H5Dextend(dataset, field->dims);
         status  = H5Dclose(dataset);
 
@@ -1764,21 +1758,21 @@
         /* temperature horizontal average */
         for(k = 0; k < mz; k++)
             field->data[k] = E->Have.T[k+1];
-        dataset = H5Dopen(cap_group, "T_avg");
+        dataset = H5Dopen(cap_group, "average/temperature");
         status  = h5write_field(dataset, field);
         status  = H5Dclose(dataset);
 
         /* Vxy horizontal average (rms) */
         for(k = 0; k < mz; k++)
             field->data[k] = E->Have.V[1][k+1];
-        dataset = H5Dopen(cap_group, "Vxy_rms");
+        dataset = H5Dopen(cap_group, "average/horizontal_velocity");
         status  = h5write_field(dataset, field);
         status  = H5Dclose(dataset);
 
         /* Vz horizontal average (rms) */
         for(k = 0; k < mz; k++)
             field->data[k] = E->Have.V[2][k+1];
-        dataset = H5Dopen(cap_group, "Vz_rms");
+        dataset = H5Dopen(cap_group, "average/vertical_velocity");
         status  = h5write_field(dataset, field);
         status  = H5Dclose(dataset);
     }

Modified: mc/3D/CitcomS/trunk/lib/hdf5_related.h
===================================================================
--- mc/3D/CitcomS/trunk/lib/hdf5_related.h	2006-08-23 19:39:30 UTC (rev 4403)
+++ mc/3D/CitcomS/trunk/lib/hdf5_related.h	2006-08-23 23:16:35 UTC (rev 4404)
@@ -106,8 +106,6 @@
      * only cap_groups[0] should be used.
      */
     hid_t cap_groups[12];
-    hid_t cap_surf_groups[12];
-    hid_t cap_botm_groups[12];
 
     /* Data structures to use in dataset writes...
      * 



More information about the cig-commits mailing list