aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authortradke <tradke@4825ed28-b72c-4eae-9704-e50c059e567d>2002-06-27 12:49:14 +0000
committertradke <tradke@4825ed28-b72c-4eae-9704-e50c059e567d>2002-06-27 12:49:14 +0000
commitf34cce1984aacff122cf24a698c62517e7b4ec4b (patch)
treec95957edb045a2b53a1dc23a17f3a75cd2d01eef /doc
parent1d7cc319c086f155bd553286e5e998684d29df74 (diff)
Add the "Cactus version" attribute to a datafile indicating that variables
with multiple timelevels should be read in following the new timelevel scheme. Thanks to Ken Smith for pointing this out. This closes PR Documentation/1107. git-svn-id: http://svn.cactuscode.org/arrangements/CactusPUGHIO/IOHDF5/trunk@145 4825ed28-b72c-4eae-9704-e50c059e567d
Diffstat (limited to 'doc')
-rw-r--r--doc/CreateIOHDF5datafile.c20
-rw-r--r--doc/documentation.tex6
2 files changed, 20 insertions, 6 deletions
diff --git a/doc/CreateIOHDF5datafile.c b/doc/CreateIOHDF5datafile.c
index 5e1d597..bb1275c 100644
--- a/doc/CreateIOHDF5datafile.c
+++ b/doc/CreateIOHDF5datafile.c
@@ -33,10 +33,13 @@
#define GLOBAL_ATTRIBUTES_GROUP "Global Attributes"
#define CCTK_GF 2
+/* the Cactus version that this datafile is (upwards) compatible with
+ (versions below beta10 use a different timelevel scheme) */
+#define CACTUS_VERSION "4.0.b10"
+
/* a simple macro to do an HDF5 call with return code checking
in case of an error it will issue an error message and exit */
#define CHECK_ERROR(hdf5_call) \
- do \
{ \
int _error_code = hdf5_call; \
\
@@ -48,7 +51,7 @@
__LINE__, #hdf5_call, _error_code); \
return (-1); \
} \
- } while (0)
+ }
/*@@
@@ -96,6 +99,8 @@ int main (void)
we are lazy here and only initialize it to zero */
data = calloc (elements, sizeof (double));
+ CHECK_ERROR (stringtype = H5Tcopy (H5T_C_S1));
+
/**************************************************************************/
/* create a group with attributes describing how the data in this file */
@@ -127,6 +132,14 @@ int main (void)
dataspace, H5P_DEFAULT));
CHECK_ERROR (H5Awrite (attr, H5T_NATIVE_INT, &ioproc_every));
CHECK_ERROR (H5Aclose (attr));
+
+ /* the version of Cactus that this datafile is (upwards) compatible with */
+ CHECK_ERROR (H5Tset_size (stringtype, strlen (CACTUS_VERSION)));
+ CHECK_ERROR (attr = H5Acreate (dataset, "Cactus version", stringtype,
+ dataspace, H5P_DEFAULT));
+ CHECK_ERROR (H5Awrite (attr, stringtype, CACTUS_VERSION));
+ CHECK_ERROR (H5Aclose (attr));
+
CHECK_ERROR (H5Gclose (group));
CHECK_ERROR (H5Sclose (dataspace));
@@ -161,9 +174,6 @@ int main (void)
/* add the necessary attributes describing the dataset */
/* as a Cactus grid variable */
/**************************************************************************/
- CHECK_ERROR (dataspace = H5Screate (H5S_SCALAR));
- CHECK_ERROR (stringtype = H5Tcopy (H5T_C_S1));
-
/* the variable's group name (as specified in the interface.ccl file) */
groupname = "grid::coordinates";
CHECK_ERROR (H5Tset_size (stringtype, strlen (groupname)));
diff --git a/doc/documentation.tex b/doc/documentation.tex
index d950402..fc0afbc 100644
--- a/doc/documentation.tex
+++ b/doc/documentation.tex
@@ -220,12 +220,16 @@ template for building your own data converter program.\\
\item Does the file contain chunked or unchunked data ?
\item How many processors were used to produce the data ?
\item How many I/O processors were used to write the data ?
+ \item What Cactus version is this datafile compatible with ?
\end{itemize}
Such information is put into as attributes into a group named
{\tt "Global Attributes"}. Since we assume unchunked data here
the processor information isn't relevant --- unchunked data can
be fed back into a Cactus simulation running on an arbitrary
- number of processors.
+ number of processors.\\
+ The Cactus version ID must be present to indicate that grid variables
+ with multiple timelevels should be recovered following the new
+ timelevel scheme (as introduced in Cactus beta 10).
\end{enumerate}
The example C program goes through all of these steps and creates a datafile