diff --git a/.gitattributes b/.gitattributes index b8c9075..e05abd7 100644 --- a/.gitattributes +++ b/.gitattributes @@ -522,6 +522,7 @@ test/H5Fed/tetmesh_write2.c -text test/H5Fed/tetmesh_write_tags.c -text test/H5Fed/trimesh_read.c -text test/H5Fed/trimesh_write.c -text +test/H5Fed/trimesh_write_dunetest.c -text test/H5Fed/write_boundary.c -text test/H5Part/Bench.c -text test/H5Part/H5ParallelTest.cc -text diff --git a/test/H5Fed/Makefile.am b/test/H5Fed/Makefile.am index e424373..7f292b6 100644 --- a/test/H5Fed/Makefile.am +++ b/test/H5Fed/Makefile.am @@ -23,7 +23,8 @@ noinst_PROGRAMS = \ tetmesh_write_tags \ tetmesh_read_tags \ trimesh_read \ - trimesh_write + trimesh_write \ + trimesh_write_dunetest # map_tet2globalid \ # map_triangle2globalid @@ -37,7 +38,8 @@ EXTRA_DIST = \ tetmesh_write_tags.c \ tetmesh_read_tags.c \ trimesh_read.c \ - trimesh_write.c + trimesh_write.c \ + trimesh_write_dunetest.c # map_tet2globalid.c \ # map_triangle2globalid.c \ diff --git a/test/H5Fed/tetmesh_adjacencies.c b/test/H5Fed/tetmesh_adjacencies.c index 506c5a7..34d9abf 100644 --- a/test/H5Fed/tetmesh_adjacencies.c +++ b/test/H5Fed/tetmesh_adjacencies.c @@ -263,7 +263,7 @@ traverse_vertices ( clock_t t_max = 0; clock_t t = 0; printf ("\nAdjacencies to vertices\n"); - h5t_entity_iterator_t* iter = H5FedBeginTraverseEntities (f, 3); + h5t_iterator_t* iter = H5FedBeginTraverseEntities (f, 3); fprintf ( stderr, "Computing all adjacencies of all vertices ... "); @@ -296,7 +296,7 @@ traverse_edges ( clock_t t_max = 0; clock_t t = 0; printf ("\nAdjacencies to edges\n"); - h5t_entity_iterator_t* iter = H5FedBeginTraverseEntities (f, 2); + h5t_iterator_t* iter = H5FedBeginTraverseEntities (f, 2); fprintf ( stderr, "Computing all adjacencies of all edges ... "); @@ -329,7 +329,7 @@ traverse_triangles ( clock_t t_total = 0; clock_t t = 0; printf ("\nAdjacencies to triangle\n"); - h5t_entity_iterator_t* iter = H5FedBeginTraverseEntities (f, 1); + h5t_iterator_t* iter = H5FedBeginTraverseEntities (f, 1); fprintf ( stderr, "Computing all adjacencies of all triangles ... "); @@ -362,7 +362,7 @@ traverse_elems ( clock_t t_max = 0; clock_t t = 0; printf ("\nAdjacencies to tetrahedra\n"); - h5t_entity_iterator_t* iter = H5FedBeginTraverseEntities (f, 0); + h5t_iterator_t* iter = H5FedBeginTraverseEntities (f, 0); fprintf ( stderr, "Computing all adjacencies of all tetrahedra ... "); diff --git a/test/H5Fed/tetmesh_read.c b/test/H5Fed/tetmesh_read.c index 7609ec8..3902b21 100644 --- a/test/H5Fed/tetmesh_read.c +++ b/test/H5Fed/tetmesh_read.c @@ -17,7 +17,7 @@ traverse_vertices ( h5_size_t num_vertices_expect = H5FedGetNumVerticesTotal (f); /* get iterator for co-dim 3 entities, i.e vertices */ - h5t_entity_iterator_t* iter = H5FedBeginTraverseEntities (f, 3); + h5t_iterator_t* iter = H5FedBeginTraverseEntities (f, 3); /* iterate */ h5_id_t local_id; @@ -54,7 +54,7 @@ traverse_edges ( printf ( "Travering edges on level %lld:\n", H5FedGetLevel(f) ); /* get iterator for co-dim 2 entities, i.e. edges */ - h5t_entity_iterator_t* iter = H5FedBeginTraverseEntities (f, 2); + h5t_iterator_t* iter = H5FedBeginTraverseEntities (f, 2); /* iterate */ h5_id_t local_id; @@ -85,7 +85,7 @@ traverse_triangles ( printf ( "Travering triangles on level %lld:\n", H5FedGetLevel(f) ); /* get iterator for co-dim 1 entities, i.e. triangles */ - h5t_entity_iterator_t* iter = H5FedBeginTraverseEntities (f, 1); + h5t_iterator_t* iter = H5FedBeginTraverseEntities (f, 1); /* iterate */ h5_id_t local_id; @@ -117,7 +117,7 @@ traverse_boundary_triangles ( printf ( "Travering boundary triangles on level %lld:\n", H5FedGetLevel(f) ); /* get iterator for co-dim 1 entities, i.e. triangles */ - h5t_entity_iterator_t* iter = H5FedBeginTraverseBoundaryFaces (f, 1); + h5t_iterator_t* iter = H5FedBeginTraverseBoundaryFaces (f, 1); /* iterate */ h5_id_t local_id; @@ -150,7 +150,7 @@ traverse_elems ( h5_size_t num_elems_expect = H5FedGetNumElementsTotal (f); /* get iterator for co-dim 0 */ - h5t_entity_iterator_t* iter = H5FedBeginTraverseEntities (f, 0); + h5t_iterator_t* iter = H5FedBeginTraverseEntities (f, 0); /* iterate over all co-dim 0 entities, i.e. elements */ h5_id_t local_id; diff --git a/test/H5Fed/tetmesh_read_tags.c b/test/H5Fed/tetmesh_read_tags.c index 28b6850..3f6e9a2 100644 --- a/test/H5Fed/tetmesh_read_tags.c +++ b/test/H5Fed/tetmesh_read_tags.c @@ -31,7 +31,7 @@ traverse_vertices ( h5_size_t real_num = 0; h5_size_t num = H5FedGetNumVerticesTotal ( f ); - h5t_entity_iterator_t* iter = H5FedBeginTraverseEntities (f, 3 ); + h5t_iterator_t* iter = H5FedBeginTraverseEntities (f, 3 ); while ( (real_num < num) && ((local_id = H5FedTraverseEntities (f, iter)) >= 0) ) { size_t size; @@ -62,7 +62,7 @@ traverse_edges ( ) { h5_id_t local_id; - h5t_entity_iterator_t* iter = H5FedBeginTraverseEntities (f, 1); + h5t_iterator_t* iter = H5FedBeginTraverseEntities (f, 1); while ( (local_id = H5FedTraverseEntities (f, iter)) >= 0 ) { h5_id_t local_vids[4]; H5FedGetVertexIndicesOfEntity( f, local_id, local_vids ); @@ -87,7 +87,7 @@ traverse_triangles ( ) { h5_id_t local_id; - h5t_entity_iterator_t* iter = H5FedBeginTraverseEntities (f, 2); + h5t_iterator_t* iter = H5FedBeginTraverseEntities (f, 2); while ( (local_id = H5FedTraverseEntities (f, iter)) >= 0 ) { size_t size; h5_int64_t retval[3]; @@ -113,7 +113,7 @@ traverse_tets ( h5_size_t num = H5FedGetNumElementsTotal ( f ); - h5t_entity_iterator_t* iter = H5FedBeginTraverseEntities (f, 0); + h5t_iterator_t* iter = H5FedBeginTraverseEntities (f, 0); while ( (real_num < num) && ((local_id = H5FedTraverseEntities (f, iter)) >= 0) ) { size_t size; diff --git a/test/H5Fed/tetmesh_write_tags.c b/test/H5Fed/tetmesh_write_tags.c index 62feed9..06a0cab 100644 --- a/test/H5Fed/tetmesh_write_tags.c +++ b/test/H5Fed/tetmesh_write_tags.c @@ -16,15 +16,15 @@ set_vertex_tags ( h5_int64_t val[3]; printf ("\nSet tags to vertices\n"); - h5t_entity_iterator_t* iter = H5FedBeginTraverseEntities (f, 3); + h5t_iterator_t* iter = H5FedBeginTraverseEntities (f, 3); while ((local_id = H5FedTraverseEntities (f, iter)) >= 0) { val[0] = local_id; val[1] = local_id+1; val[2] = local_id+2; H5FedSetMTag (f, "testtag", local_id, 3, val); h5_int64_t retval[3]; - size_t dims; - H5FedGetMTag (f, "testtag", local_id, &dims, retval); + size_t dim = 3; + H5FedGetMTag (f, "testtag", local_id, &dim, retval); if (memcmp (val, retval, sizeof(val))) { fprintf ( stderr, "Oops!\n"); } @@ -40,7 +40,7 @@ set_edge_tags ( h5_id_t local_id; h5_int64_t val[3]; printf ("\nSet tags to edges\n"); - h5t_entity_iterator_t* iter = H5FedBeginTraverseEntities (f, 2); + h5t_iterator_t* iter = H5FedBeginTraverseEntities (f, 2); while ((local_id = H5FedTraverseEntities (f, iter)) >= 0) { val[0] = local_id; val[1] = local_id+1; @@ -63,7 +63,7 @@ set_tri_tags ( h5_id_t local_id; h5_int64_t val[3]; printf ("\nSet tags to triangle\n"); - h5t_entity_iterator_t* iter = H5FedBeginTraverseEntities (f, 1); + h5t_iterator_t* iter = H5FedBeginTraverseEntities (f, 1); while ((local_id = H5FedTraverseEntities (f, iter)) >= 0) { val[0] = local_id; val[1] = local_id+1; @@ -86,7 +86,7 @@ set_tet_tags ( h5_id_t local_id; h5_int64_t val[3]; printf ("\nSet tags to tetrahedra\n"); - h5t_entity_iterator_t* iter = H5FedBeginTraverseEntities (f, 0); + h5t_iterator_t* iter = H5FedBeginTraverseEntities (f, 0); while ((local_id = H5FedTraverseEntities (f, iter)) >= 0) { val[0] = local_id; val[1] = local_id+1; diff --git a/test/H5Fed/trimesh_read.c b/test/H5Fed/trimesh_read.c index be57169..cce0b07 100644 --- a/test/H5Fed/trimesh_read.c +++ b/test/H5Fed/trimesh_read.c @@ -14,7 +14,7 @@ traverse_vertices ( h5_size_t num_vertices_expect = H5FedGetNumVerticesTotal (f); /* get iterator for co-dim 2 entities, i.e. vertices */ - h5t_entity_iterator_t* iter = H5FedBeginTraverseEntities (f, 2); + h5t_iterator_t* iter = H5FedBeginTraverseEntities (f, 2); /* iterate */ h5_id_t local_id; @@ -49,7 +49,7 @@ traverse_edges ( printf ( "Travering edges on level %lld:\n", H5FedGetLevel(f) ); /* get iterator for co-dim 1 entities, i.e. edges */ - h5t_entity_iterator_t* iter = H5FedBeginTraverseEntities (f, 1); + h5t_iterator_t* iter = H5FedBeginTraverseEntities (f, 1); /* iterate */ h5_id_t local_id; @@ -80,7 +80,7 @@ traverse_boundary_edges ( printf ( "Travering boundary edges on level %lld:\n", H5FedGetLevel(f) ); /* get iterator for co-dim 1 entities, i.e. edges */ - h5t_entity_iterator_t* iter = H5FedBeginTraverseBoundaryFaces (f, 1); + h5t_iterator_t* iter = H5FedBeginTraverseBoundaryFaces (f, 1); /* iterate */ h5_id_t local_id; @@ -112,7 +112,7 @@ traverse_elems ( h5_size_t num_elems_expect = H5FedGetNumElementsTotal (f); /* get iterator for co-dim 0 */ - h5t_entity_iterator_t* iter = H5FedBeginTraverseEntities (f, 0); + h5t_iterator_t* iter = H5FedBeginTraverseEntities (f, 0); /* iterate over all co-dim 0 entities, i.e. elements */ h5_id_t local_id; diff --git a/test/H5Fed/trimesh_write_dunetest.c b/test/H5Fed/trimesh_write_dunetest.c new file mode 100644 index 0000000..05b5c4a --- /dev/null +++ b/test/H5Fed/trimesh_write_dunetest.c @@ -0,0 +1,73 @@ +#include +#include + +#include "H5hut.h" + +const h5_oid_t MESH_TYPE = H5_TRIANGLE_MESH; +const char* FNAME = "simple_dunetest.h5"; + +typedef struct vertex { +h5_id_t global_id; + h5_float64_t P[3]; +} vertex_t; + +typedef struct elem { +h5_id_t global_id; + h5_id_t parent_id; + h5_id_t vids[3]; +} elem_t; + +vertex_t Vertices[] = { + { 0, { 0.0, 0.0, 0.0} }, + { 1, {-0.5, 1.0, 0.0} }, + { 2, { 0.5, 1.0, 0.0} }, + { 3, { 1.0, 0.0, 0.0} }, + { 4, { 0.5, -1.0, 0.0} }, + { 5, {-0.5, -1.0, 0.0} }, + { 6, {-1.0, 0.0, 0.0} } +}; + +elem_t Elems[] = { + { 0, -1, { 0, 1, 2 } }, + { 1, -1, { 0, 2, 3 } }, + { 2, -1, { 0, 3, 4 } }, + { 3, -1, { 0, 4, 5 } }, + { 4, -1, { 0, 5, 6 } }, + { 5, -1, { 0, 1, 6 } } +}; + +const int num_vertices = sizeof (Vertices) / sizeof (Vertices[0]); +const int num_elems = sizeof (Elems) / sizeof (Elems[0]); + +int +main ( + int argc, + char* argv[] + ) { + /* abort program on errors in library */ + H5SetErrorHandler (H5AbortErrorhandler); + H5SetVerbosityLevel (2); + + /* open file and add mesh */ + h5_file_t* const f = H5OpenFile (FNAME, H5_O_WRONLY, 0); + H5FedAddMesh (f, MESH_TYPE); + + /* store vertices */ + H5FedBeginStoreVertices (f, num_vertices); + int i; + for (i = 0; i < num_vertices; i++) { + H5FedStoreVertex (f, -1, Vertices[i].P); + } + H5FedEndStoreVertices (f); + + /* store elements */ + H5FedBeginStoreElements (f, num_elems); + for (i = 0; i < num_elems; i++) { + H5FedStoreElement (f, Elems[i].vids); + } + H5FedEndStoreElements (f); + + H5FedCloseMesh (f); + H5CloseFile (f); + return 0; +}