aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortradke <tradke@7842ec3a-9562-4be5-9c5b-06ba18f2b668>2002-05-30 15:01:49 +0000
committertradke <tradke@7842ec3a-9562-4be5-9c5b-06ba18f2b668>2002-05-30 15:01:49 +0000
commit0c56e6b408045e3aa306ea26472dc0839546ccf5 (patch)
treedbdffcbb64f31cf5e9b6b526148c318f95fda07c
parent71c7918bb3b73891db09baa2e6b461b529fd5536 (diff)
Give a more verbose warning if datasets cannot be recovered.
git-svn-id: http://svn.cactuscode.org/arrangements/CactusPUGHIO/IOHDF5Util/trunk@68 7842ec3a-9562-4be5-9c5b-06ba18f2b668
-rw-r--r--src/RecoverVar.c34
1 files changed, 30 insertions, 4 deletions
diff --git a/src/RecoverVar.c b/src/RecoverVar.c
index 29f48f2..0e09cb8 100644
--- a/src/RecoverVar.c
+++ b/src/RecoverVar.c
@@ -15,6 +15,7 @@
#include "cctk.h"
#include "cctk_Parameters.h"
+#include "util_String.h"
#include "CactusBase/IOUtil/src/ioGH.h"
#include "CactusBase/IOUtil/src/ioutil_CheckpointRecovery.h"
#include "CactusPUGH/PUGH/src/include/pugh.h"
@@ -361,7 +362,8 @@ static int GetCommonAttributes (cGH *GH,
hid_t datatype, dataspace;
hsize_t rank_stored, *dims_stored;
int grouptype_stored, ndims_stored, numtimelevels_stored;
- char *groupname, groupname_stored[128], fullvarname[128];
+ char *groupname, *msg;
+ char groupname_stored[128], fullvarname[128];
/* decompose the datasetname, ignore the iteration number */
@@ -486,13 +488,37 @@ static int GetCommonAttributes (cGH *GH,
}
}
- free (dims_stored);
if (flag)
{
- CCTK_VWarn (2, __LINE__, __FILE__, CCTK_THORNSTRING,
- "Variable sizes don't match for '%s'", fullvarname);
+ if (group_static_data.dim != (int) rank_stored)
+ {
+ CCTK_VWarn (2, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Variable dimensions don't match for '%s', got %d, expected "
+ "%d", fullvarname, (int) rank_stored, group_static_data.dim);
+ }
+ else
+ {
+ msg = NULL;
+ Util_asprintf (&msg, "Variable sizes don't match for '%s', got (%d",
+ fullvarname, (int) dims_stored[0]);
+ for (i = 1; i < group_static_data.dim; i++)
+ {
+ Util_asprintf (&msg, "%s, %d", msg, (int) dims_stored[i]);
+ }
+ dims = unchunked ? group_dynamic_data.gsh : group_dynamic_data.lsh;
+ Util_asprintf (&msg, "%s), expected (%d", msg,
+ dims[group_static_data.dim - 1]);
+ for (i = 1; i < group_static_data.dim; i++)
+ {
+ Util_asprintf (&msg, "%s, %d", msg, dims[group_static_data.dim-i-1]);
+ }
+ Util_asprintf (&msg, "%s)", msg);
+ CCTK_VWarn (2, __LINE__, __FILE__, CCTK_THORNSTRING, msg);
+ free (msg);
+ }
return (-1);
}
+ free (dims_stored);
if (! CCTK_QueryGroupStorageI (GH, groupindex))
{