trimesh_2gnuplot added to test/H5Fed
This commit is contained in:
@@ -520,6 +520,7 @@ test/H5Fed/tetmesh_write.c -text
|
||||
test/H5Fed/tetmesh_write1.c -text
|
||||
test/H5Fed/tetmesh_write2.c -text
|
||||
test/H5Fed/tetmesh_write_tags.c -text
|
||||
test/H5Fed/trimesh_2gnuplot.c -text
|
||||
test/H5Fed/trimesh_adjacencies.c -text
|
||||
test/H5Fed/trimesh_read.c -text
|
||||
test/H5Fed/trimesh_write.c -text
|
||||
|
||||
@@ -16,6 +16,7 @@ noinst_PROGRAMS = \
|
||||
tetmesh_read_tags \
|
||||
trimesh_read \
|
||||
trimesh_write \
|
||||
trimesh_2gnuplot \
|
||||
trimesh_adjacencies \
|
||||
trimesh_write_dunetest
|
||||
|
||||
@@ -28,12 +29,13 @@ EXTRA_DIST = \
|
||||
tetmesh_read.c \
|
||||
tetmesh_read_tags.c \
|
||||
tetmesh_write.c \
|
||||
tetmesh_write1.c \
|
||||
tetmesh_write1.c \
|
||||
tetmesh_write2.c \
|
||||
tetmesh_write_tags.c \
|
||||
trimesh_adjacencies.c \
|
||||
trimesh_read.c \
|
||||
trimesh_write.c \
|
||||
trimesh_2gnuplot.c \
|
||||
trimesh_write_dunetest.c
|
||||
|
||||
# map_tet2globalid.c \
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "H5hut.h"
|
||||
#if defined (PARALLEL_IO)
|
||||
#include <mpi.h>
|
||||
#endif
|
||||
|
||||
#define H5FedGetNumLeafElementsTotal H5FedGetNumElementsTotal
|
||||
/*
|
||||
Traverse elements and output coordinates
|
||||
*/
|
||||
static h5_err_t
|
||||
traverse_elems (
|
||||
h5t_mesh_t* const m
|
||||
) {
|
||||
/* get number of elements we have to expect */
|
||||
h5_size_t num_elems_expect = H5FedGetNumLeafElementsTotal (m);
|
||||
|
||||
/* get iterator for co-dim 0 */
|
||||
h5t_iterator_t* iter = H5FedBeginTraverseEntities (m, 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 (iter)) >= 0) {
|
||||
h5_loc_id_t local_vids[4];
|
||||
H5FedGetVertexIndicesOfEntity (m, local_id, local_vids);
|
||||
|
||||
printf ("# cell %llx\n", (long long unsigned)local_id );
|
||||
h5_float64_t P[3];
|
||||
for (int i = 0; i < 3; i++) {
|
||||
H5FedGetVertexCoordsByIndex (m, local_vids[i], P);
|
||||
printf (" %8.6f %8.6f\n", P[0], P[1]);
|
||||
}
|
||||
H5FedGetVertexCoordsByIndex (m, local_vids[0], P);
|
||||
printf (" %8.6f %8.6f\n", P[0], P[1]);
|
||||
printf ("\n");
|
||||
num_elems++;
|
||||
}
|
||||
|
||||
/* done */
|
||||
H5FedEndTraverseEntities (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;
|
||||
}
|
||||
|
||||
int
|
||||
main (
|
||||
int argc,
|
||||
char* argv[]
|
||||
) {
|
||||
|
||||
#if defined (PARALLEL_IO)
|
||||
MPI_Comm comm = MPI_COMM_WORLD;
|
||||
MPI_Init (&argc, &argv);
|
||||
#else
|
||||
MPI_Comm comm = 0;
|
||||
#endif
|
||||
if (argc < 2 || argc > 3) {
|
||||
fprintf (stderr, "Usage: %s FILE [LEVEL]\n", argv[0]);
|
||||
exit (42);
|
||||
}
|
||||
|
||||
/* abort program on error, so we don't have to handle them */
|
||||
H5SetErrorHandler (H5AbortErrorhandler);
|
||||
H5SetVerbosityLevel (0);
|
||||
|
||||
/* open file and get number of meshes */
|
||||
h5_file_t* f = H5OpenFile (argv[1], H5_O_RDONLY, comm);
|
||||
h5t_mesh_t* m;
|
||||
H5FedOpenTriangleMeshByIndex (f, 0, &m);
|
||||
int num_levels = H5FedGetNumLevels (m);
|
||||
int level = num_levels-1;
|
||||
if (argc >= 3) {
|
||||
level = atoi (argv[2]);
|
||||
}
|
||||
if (level >= num_levels || level < 0) {
|
||||
fprintf (stderr, "level %d out of range\n", level);
|
||||
goto done;
|
||||
}
|
||||
H5FedSetLevel (m, level);
|
||||
traverse_elems (m);
|
||||
|
||||
|
||||
done:
|
||||
H5FedCloseMesh (m);
|
||||
H5CloseFile (f);
|
||||
|
||||
#if defined (PARALLEL_IO)
|
||||
MPI_Finalize ();
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user