From cfc13be3af826b69e96fea47d81234d3300c25b0 Mon Sep 17 00:00:00 2001 From: Achim Gsell Date: Thu, 16 Jun 2011 14:05:07 +0000 Subject: [PATCH] add function to output coordinates of all elements --- test/H5Fed/trimesh_read.c | 47 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/test/H5Fed/trimesh_read.c b/test/H5Fed/trimesh_read.c index beb3727..943d1ca 100644 --- a/test/H5Fed/trimesh_read.c +++ b/test/H5Fed/trimesh_read.c @@ -150,6 +150,50 @@ traverse_elems ( return H5_SUCCESS; } +/* + Traverse elements and output coordinates + */ +static h5_err_t +traverse_elems2 ( + h5_file_t* const f + ) { + /* get number of elements we have to expect */ + h5_size_t num_elems_expect = H5FedGetNumElementsTotal (f); + + /* get iterator for co-dim 0 */ + h5t_iterator_t* iter = H5FedBeginTraverseEntities (f, 0); + + /* iterate over all co-dim 0 entities, i.e. elements */ + h5_loc_id_t local_id; + h5_size_t num_elems = 0; + while ((local_id = H5FedTraverseEntities (f, iter)) >= 0) { + printf ("%05llu", (unsigned long long)num_elems); + h5_loc_id_t local_vids[4]; + H5FedGetVertexIndicesOfEntity (f, local_id, local_vids); + int i; + for (i = 0; i < 3; i++) { + h5_float64_t P[3]; + H5FedGetVertexCoordsByIndex (f, local_vids[i], P); + printf (" %8.6f %8.6f %8.6f", P[0], P[1], P[2]); + } + printf ("\n"); + num_elems++; + } + + /* done */ + H5FedEndTraverseEntities (f, iter); + + /* report error if we got a different number then expected */ + if (num_elems != num_elems_expect) { + fprintf (stderr, "!!! Got %lld elements, but expected %lld.\n", + (long long)num_elems, (long long)num_elems_expect); + exit(1); + + + } + return H5_SUCCESS; +} + static h5_err_t traverse_level ( h5_file_t* const f, @@ -161,6 +205,7 @@ traverse_level ( traverse_edges (f); traverse_boundary_edges (f); traverse_elems (f); + traverse_elems2 (f); return H5_SUCCESS; } @@ -201,7 +246,7 @@ main ( /* abort program on error, so we don't have to handle them */ H5SetErrorHandler (H5AbortErrorhandler); - H5SetVerbosityLevel (255); + H5SetVerbosityLevel (0); /* open file and get number of meshes */ h5_file_t* f = H5OpenFile (FNAME, H5_O_RDONLY, comm);