[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