From ce9205c368478c06519aa0914fe8f297a4f2efc9 Mon Sep 17 00:00:00 2001 From: Achim Gsell Date: Fri, 13 Nov 2009 21:52:57 +0000 Subject: [PATCH] tetmesh_write2.c added --- .gitattributes | 1 + test/H5Fed/tetmesh_write2.c | 105 ++++++++++++++++++++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 test/H5Fed/tetmesh_write2.c diff --git a/.gitattributes b/.gitattributes index f32d6c3..7e3d927 100644 --- a/.gitattributes +++ b/.gitattributes @@ -468,6 +468,7 @@ test/H5Fed/tetmesh_adjacencies.c -text test/H5Fed/tetmesh_read.c -text test/H5Fed/tetmesh_read_tags.c -text test/H5Fed/tetmesh_write.c -text +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 diff --git a/test/H5Fed/tetmesh_write2.c b/test/H5Fed/tetmesh_write2.c new file mode 100644 index 0000000..92f626e --- /dev/null +++ b/test/H5Fed/tetmesh_write2.c @@ -0,0 +1,105 @@ +#include +#include +#include + +#include "H5Part.h" +#include "H5Fed.h" + +#ifndef PARALLEL_IO +#ifndef MPI_COMM_WORLD +#define MPI_COMM_WORLD 0 +#endif +#endif + +struct vertex { + h5_float64_t P[3]; +}; + +typedef struct vertex vertex_t; + +struct tet { + h5_id_t vids[4]; +}; +typedef struct tet tet_t; + + +vertex_t V0[] = { + {{ -1.0, 0.0, 0.0 }}, + {{ 1.0, 0.0, 0.0 }}, + {{ 0.0, 1.0, 0.0 }}, + {{ 0.0, 0.0, 1.0 }} +}; + +// sorted vertices: 0, 4, 5, 3, 2, 1 + +tet_t T0[] = { + {{ 0, 1, 2, 3 }} // 0, 3, 2, 1 +}; + +static h5_int32_t +power ( + h5_int32_t x, + h5_int32_t y + ) { + h5_int32_t p = 1; + h5_int32_t b = y; + // bits in b correspond to values of powerN + // so start with p=1, and for each set bit in b, + // multiply corresponding table entry + h5_int32_t powerN = x; + + while ( b != 0 ) { + if ( (b&1) != 0 ) p *= powerN; + b >>= 1; + powerN=powerN*powerN; + } + return p; +} + +int +main ( + int argc, + char *argv[] + ) { + h5_int32_t num_levels = 11; + H5SetVerbosityLevel ( 2 ); + H5SetErrorHandler ( H5AbortErrorhandler ); + h5_file_t *f = H5OpenFile ( "tetmesh.h5", H5_O_WRONLY, 0 ); + H5FedAddMesh ( f, H5_TETRAHEDRAL_MESH ); + + h5_int32_t i; + h5_int32_t num = sizeof(V0) / sizeof(V0[0]); + H5FedBeginStoreVertices ( f, num ); + for ( i = 0; i