bug fixes, some private functions renamed, formating changes

This commit is contained in:
2013-06-27 16:18:08 +00:00
parent 80523c6df7
commit 65757c1974
30 changed files with 217 additions and 192 deletions
+2 -1
View File
@@ -1,5 +1,5 @@
# src/C level Makefile.am
if ENABLE_C
# Header files that I wish to install in $(prefix)/include
include_HEADERS = \
../include/H5.h \
@@ -22,6 +22,7 @@ include_HEADERS = \
# Listing of all possible headers that I may include
EXTRA_HEADERS =
endif
clean-local:
$(RM) *~
+22 -25
View File
@@ -1,33 +1,28 @@
# src/Fortran level Makefile.am
OBJEXT=o
if ENABLE_FORTRAN
AM_CPPFLAGS += -I$(top_srcdir)/src/include
AM_CPPFLAGS = -I../include @AM_CPPFLAGS@
F90_FILES = H5F.f90 \
H5_constF.f90 \
H5_attribsF.f90 \
H5PartF.f90 \
H5Part_ioF.f90 \
H5BlockF.f90 \
H5Block_attribsF.f90 \
H5Block_ioF.f90
F90_FILES = \
H5F.f90 \
H5_constF.f90 \
H5_attribsF.f90 \
H5PartF.f90 \
H5Part_ioF.f90 \
H5BlockF.f90 \
H5Block_attribsF.f90 \
H5Block_ioF.f90
EXTRA_HEADERS =
# Extra files that I wish to include in the dist tar ball.
EXTRA_DIST = TestUnderscoreC.c \
TestUnderscore.f \
$(F90_FILES)
EXTRA_DIST = \
TestUnderscoreC.c \
TestUnderscore.f \
$(F90_FILES)
# Files that I don't want to include in the dist tar ball
nodist_include_HEADERS = ../include/H5hutF.h
nodist_include_HEADERS = \
$(top_srcdir)/src/include/H5hutF.h
# What to build... Will be determined by configure script.
lib_LTLIBRARIES = @LIB_FORTRAN@
# Listing of all possible targets that I may build.
EXTRA_LTLIBRARIES = libH5hutF.la
lib_LTLIBRARIES = libH5hutF.la
include_HEADERS = \
../include/H5hutF.h
@@ -41,17 +36,19 @@ libH5hutF_la_SOURCES = \
H5Block_attribs.c \
H5Block_io.c
libH5hutF_la_DEPENDENCIES =
libH5hutF_la_DEPENDENCIES = \
$(top_srcdir)/src/include/H5hutF.h
libH5hutF_la_LDFLAGS = -version-info 2:0:0 -rpath '$(libdir)'
../include/H5hutF.h: $(F90_FILES)
$(top_srcdir)/src/include/H5hutF.h: $(F90_FILES)
awk '/INTEGER\*8 :: /{print "\t" $$0}' $^ >$@
awk '/PARAMETER /{print "\t" $$0}' $^ >> $@
awk '/INTEGER\*8 FUNCTION/{print "\t" $$1 " " $$3}' $^ >>$@
all-local: ../include/H5hutF.h
$(INSTALL) -m644 .libs/libH5hutF.a ../lib
endif
clean: clean-am
+1 -3
View File
@@ -1,4 +1,2 @@
# test level Makefile.am
SUBDIRS = h5core @BINDINGS@
SUBDIRS = h5core C Fortran include
+4 -7
View File
@@ -1,6 +1,3 @@
# src level Makefile.am
OBJEXT=o
AM_CPPFLAGS = -I$(top_srcdir)/src/include @AM_CPPFLAGS@
@@ -103,13 +100,13 @@ libH5hut_la_DEPENDENCIES = $(EXTRA_HEADERS)
libH5hut_la_LDFLAGS = -version-info 2:0:0
all-local:
$(INSTALL) -m755 -d ../lib
$(INSTALL) -m644 .libs/libH5hut.a ../lib
$(INSTALL) -m0755 -d $(top_builddir)/src/lib
$(INSTALL) -m644 .libs/libH5hut.a $(top_builddir)/src/lib
install-exec-local:
@$(INSTALL) -d $(DESTDIR)$(includedir)/h5core
@$(INSTALL) -m644 ../include/h5core/*.h $(DESTDIR)$(includedir)/h5core/
@$(INSTALL) -m644 $(top_srcdir)/src/include/h5core/*.h $(DESTDIR)$(includedir)/h5core/
clean-local:
$(RM) -f ../lib/libH5hut.*
$(RM) -f $(top_srcdir)/src/lib/libH5hut.*
$(RM) -f *~
+2 -1
View File
@@ -205,7 +205,8 @@ copy_glb_elems (
return (h5_glb_elem_t*)dst;
}
int compare_glb_elems(const void *p_a, const void *p_b) {
static int
compare_glb_elems(const void *p_a, const void *p_b) {
return ((h5_glb_tet_t*) p_a)->idx - ((h5_glb_tet_t*) p_b)->idx;
}
+2 -1
View File
@@ -203,7 +203,8 @@ copy_glb_elems (
return (h5_glb_elem_t*)dst;
}
int compare_glb_elems(const void *p_a, const void *p_b) {
static int
compare_glb_elems(const void *p_a, const void *p_b) {
return ((h5_glb_tri_t*) p_a)->idx - ((h5_glb_tri_t*) p_b)->idx;
}
+3 -3
View File
@@ -292,7 +292,7 @@ get_edges_uadj_to_vertex (
"m=%p, entity_id=%llu, list=%p",
m, (long long unsigned)entity_id, list);
h5_loc_idx_t vertex_idx;
TRY( h5tpriv_get_vertex_index_of_vertex (m, entity_id, &vertex_idx) );
TRY( h5tpriv_get_loc_vtx_idx_of_vtx (m, entity_id, &vertex_idx) );
h5_loc_idlist_t* tv = m->adjacencies.tv.v[vertex_idx];
TRY( h5priv_alloc_loc_idlist (list, 8) );
@@ -335,7 +335,7 @@ get_triangles_uadj_to_vertex (
Note: this list may include tetrahedra which are not in
the (current) leaf grid */
h5_loc_idx_t vertex_idx;
TRY( h5tpriv_get_vertex_index_of_vertex (m, entity_id, &vertex_idx) );
TRY( h5tpriv_get_loc_vtx_idx_of_vtx (m, entity_id, &vertex_idx) );
h5_loc_idlist_t* tv = m->adjacencies.tv.v[vertex_idx];
// build list of upward adjacent triangles
@@ -375,7 +375,7 @@ get_tets_uadj_to_vertex (
"m=%p, entity_id=%llu, list=%p",
m, (long long unsigned)entity_id, list);
h5_loc_idx_t vertex_idx;
TRY( h5tpriv_get_vertex_index_of_vertex (m, entity_id, &vertex_idx) );
TRY( h5tpriv_get_loc_vtx_idx_of_vtx (m, entity_id, &vertex_idx) );
h5_loc_idlist_t* tv = m->adjacencies.tv.v[vertex_idx];
TRY( h5priv_alloc_loc_idlist (list, 8) );
+2 -2
View File
@@ -168,7 +168,7 @@ get_edges_uadj_to_vertex (
"m=%p, entity_id=%llu, list=%p",
m, (long long unsigned)entity_id, list);
h5_loc_idx_t vertex_idx;
TRY( h5tpriv_get_vertex_index_of_vertex (m, entity_id, &vertex_idx) );
TRY( h5tpriv_get_loc_vtx_idx_of_vtx (m, entity_id, &vertex_idx) );
h5_loc_idlist_t* tv = m->adjacencies.tv.v[vertex_idx];
TRY( h5priv_alloc_loc_idlist (list, 8) );
@@ -204,7 +204,7 @@ get_triangles_uadj_to_vertex (
"m=%p, entity_id=%llu, list=%p",
m, (long long unsigned)entity_id, list);
h5_loc_idx_t vertex_idx;
TRY( h5tpriv_get_vertex_index_of_vertex (m, entity_id, &vertex_idx) );
TRY( h5tpriv_get_loc_vtx_idx_of_vtx (m, entity_id, &vertex_idx) );
h5_loc_idlist_t* tv = m->adjacencies.tv.v[vertex_idx];
TRY ( h5priv_alloc_loc_idlist (list, 8) );
+1 -1
View File
@@ -32,7 +32,7 @@ h5tpriv_enter_tv2 (
m, (long long)face_idx, (long long)elem_idx, idlist);
h5_loc_idx_t vertex_idx;
TRY (h5t_get_loc_vertex_index_of_vertex2 (
TRY (h5tpriv_get_loc_vtx_idx_of_vtx2 (
m,
face_idx, elem_idx,
&vertex_idx));
+3 -3
View File
@@ -303,7 +303,7 @@ h5t_get_glb_vertex_indices_of_entity (
}
h5_err_t
h5tpriv_get_vertex_index_of_vertex (
h5tpriv_get_loc_vtx_idx_of_vtx (
h5t_mesh_t* const m,
const h5_loc_id_t entity_id,
h5_loc_idx_t* vertex_index
@@ -315,12 +315,12 @@ h5tpriv_get_vertex_index_of_vertex (
(long long unsigned)*vertex_index);
h5_loc_idx_t face_idx = h5tpriv_get_face_idx (entity_id);
h5_loc_idx_t elem_idx = h5tpriv_get_elem_idx (entity_id);
H5_CORE_API_RETURN (h5tpriv_get_vertex_index_of_vertex2 (
H5_CORE_API_RETURN (h5tpriv_get_loc_vtx_idx_of_vtx2 (
m, face_idx, elem_idx, vertex_index));
}
h5_err_t
h5tpriv_get_vertex_index_of_vertex2 (
h5tpriv_get_loc_vtx_idx_of_vtx2 (
h5t_mesh_t* const m,
const h5_loc_idx_t face_idx, // vertex index according ref. element
const h5_loc_idx_t elem_idx, // local element index
+2 -2
View File
@@ -69,14 +69,14 @@ h5priv_find_in_idlist (glb_id)
h5priv_search_in_xlist (glb_id)
h5_err_t
h5tpriv_get_vertex_index_of_vertex (
h5tpriv_get_loc_vtx_idx_of_vtx (
h5t_mesh_t* const m,
const h5_loc_id_t entity_id,
h5_loc_idx_t* vertex_index
);
h5_err_t
h5tpriv_get_vertex_index_of_vertex2 (
h5tpriv_get_loc_vtx_idx_of_vtx2 (
h5t_mesh_t* const m,
const h5_loc_idx_t face_idx,
const h5_loc_idx_t elem_idx,
+2 -1
View File
@@ -191,7 +191,8 @@ h5tpriv_init_mesh (
"__num_leaf_levels__",
H5T_NATIVE_INT16,
&m->num_leaf_levels));
m->leaf_level = m->num_leaf_levels-1; //seems not to be set otherwise but for reading vtx it should be...
//seems not to be set otherwise but for reading vtx it should be...
m->leaf_level = m->num_leaf_levels-1;
TRY (m->num_glb_elems = h5_calloc (m->num_leaf_levels, sizeof(*m->num_glb_elems)));
TRY (m->num_glb_leaf_elems = h5_calloc (m->num_leaf_levels, sizeof(*m->num_glb_leaf_elems)));
TRY (m->num_glb_vertices = h5_calloc (m->num_leaf_levels, sizeof (*m->num_glb_vertices)));
+4
View File
@@ -137,6 +137,7 @@ h5_err_t
h5t_add_tetrahedral_mesh (
const h5_file_t fh,
const char* name,
const h5_weight_t num_weights,
h5t_mesh_t** mesh
) {
h5_file_p f = (h5_file_p)fh;
@@ -177,11 +178,13 @@ h5t_add_tetrahedral_mesh (
m->leaf_level = 0;
m->num_leaf_levels = 0;
m->num_weights = num_weights;
TRY (h5tpriv_add_level (m));
m->mesh_changed = 1;
H5_CORE_API_RETURN (H5_SUCCESS);
}
/*!
Add new mesh
@@ -191,6 +194,7 @@ h5_err_t
h5t_add_chunked_tetrahedral_mesh (
const h5_file_t fh,
const char* name,
const h5_weight_t num_weights,
h5t_mesh_t** mesh
) {
h5_file_p f = (h5_file_p)fh;
+2
View File
@@ -153,6 +153,7 @@ h5_err_t
h5t_add_triangle_mesh (
const h5_file_t fh,
const char* name,
const h5_weight_t num_weights,
h5t_mesh_t** mesh
) {
h5_file_p f = (h5_file_p)fh;
@@ -207,6 +208,7 @@ h5_err_t
h5t_add_chunked_triangle_mesh(
const h5_file_t fh,
const char* name,
const h5_weight_t num_weights,
h5t_mesh_t** mesh
) {
h5_file_p f = (h5_file_p)fh;
+2 -2
View File
@@ -319,7 +319,7 @@ h5t_get_vertex_coords_by_id (
(long long unsigned)vertex_id,
P);
h5_loc_idx_t vertex_index;
TRY (h5tpriv_get_vertex_index_of_vertex (m, vertex_id, &vertex_index));
TRY (h5tpriv_get_loc_vtx_idx_of_vtx (m, vertex_id, &vertex_index));
TRY (h5t_get_vertex_coords_by_index (m, vertex_index, P));
H5_CORE_API_RETURN (H5_SUCCESS);
}
@@ -336,7 +336,7 @@ h5t_get_vertex_by_id (
m, (long long)vertex_id, glb_idx, P);
// get loc index of vertex
h5_loc_idx_t idx;
TRY (h5t_get_loc_vertex_index_of_vertex (m, vertex_id, &idx));
TRY (h5tpriv_get_loc_vtx_idx_of_vtx (m, vertex_id, &idx));
*glb_idx = m->vertices[idx].idx;
*P = m->vertices[idx].P;
H5_CORE_API_RETURN (H5_SUCCESS);
+20 -16
View File
@@ -497,12 +497,11 @@ h5t_end_store_vertices (
h5_err_t
h5t_begin_store_elems (
h5t_mesh_t* const m,
const h5_size_t num,
const h5_weight_t num_weights
const h5_size_t num
) {
H5_CORE_API_ENTER (h5_err_t,
"m=%p, num=%llu, num_weights=%d",
m, (long long unsigned)num, num_weights);
"m=%p, num=%llu",
m, (long long unsigned)num);
h5_debug ("begin storing %llu elements", (long long)num);
size_t cur = m->leaf_level > 0 ? m->num_interior_elems[m->leaf_level-1] : 0;
@@ -515,9 +514,8 @@ h5t_begin_store_elems (
m->num_interior_leaf_elems[m->leaf_level] = m->leaf_level > 0 ?
num + m->num_interior_leaf_elems[m->leaf_level-1] : num;
m->num_weights = num_weights;
if (m->leaf_level == 0) {
TRY (m->weights = h5_calloc(num_weights * num, sizeof (* m->weights) ));
TRY (m->weights = h5_calloc(m->num_weights * num, sizeof (* m->weights) ));
if (m->num_weights < 1) {
m->weights = NULL;
}
@@ -541,13 +539,13 @@ h5t_begin_store_elems (
tetrahedron.
*/
h5_loc_idx_t
h5t_store_elem (
h5tpriv_add_cell (
h5t_mesh_t* const m,
const h5_loc_idx_t parent_idx,
const h5_loc_idx_t* vertex_indices,
const h5_weight_t* weights
) {
H5_CORE_API_ENTER (h5_loc_idx_t,
H5_PRIV_FUNC_ENTER (h5_loc_idx_t,
"m=%p, parent_idx=%lld, vertex_indices=%p, weights=%p",
m,
(long long)parent_idx,
@@ -602,20 +600,19 @@ h5t_store_elem (
}
H5_CORE_API_RETURN (elem_idx);
}
h5_loc_idx_t
h5t_store_elem2 (
h5t_add_lvl0_cell (
h5t_mesh_t* const m,
const h5_loc_idx_t parent_idx,
const h5_loc_idx_t* vertex_indices,
const h5_weight_t* weights
) {
H5_CORE_API_ENTER (h5_loc_idx_t,
"m=%p, parent_idx=%lld, vertex_indices=%p, weights=%p",
"m=%p, vertex_indices=%p, weights=%p",
m,
(long long)parent_idx,
vertex_indices,
weights);
h5t_store_elem (m, parent_idx, vertex_indices, weights);
h5tpriv_add_cell (m, -1, vertex_indices, weights);
h5_loc_idx_t* loc_vertex_indices = h5tpriv_get_loc_elem_vertex_indices (
m, m->last_stored_eid);
int num_vertices = h5tpriv_ref_elem_get_num_vertices (m);
@@ -682,7 +679,11 @@ h5t_end_store_elems (
h5t_mesh_t* const m
) {
H5_CORE_API_ENTER (h5_err_t, "m=%p", m);
h5_debug ("end storing elements");
if (m->leaf_level == 0) {
m->num_glb_leaf_elems[0] = m->num_glb_elems[0];
}
m->num_interior_elems[m->leaf_level] = m->last_stored_eid+1;
m->num_glb_elems[m->leaf_level] = m->last_stored_eid+1;
m->num_glb_leaf_elems[m->leaf_level] = m->num_interior_leaf_elems[m->leaf_level];
@@ -1787,7 +1788,8 @@ h5t_refine_marked_elems_chk (
// refine elements
for (int i = 0; i < num_midpoints; i++) {
TRY (h5tpriv_refine_elem (m, h5t_map_glb_elem_idx2loc(m,midpoints[i].elem))); // needs to be ordered acc to octants
// needs to be ordered acc to octants
TRY (h5tpriv_refine_elem (m, h5t_map_glb_elem_idx2loc(m,midpoints[i].elem)));
}
TRY (h5_free (oct_c_list.items));
TRY (h5_free (elem_range));
@@ -2147,7 +2149,9 @@ store_exchanged_elems (
// create list of new glb_vtx
h5_glb_vertex_t* new_vtx = h5_calloc(new_elems_c * 4, sizeof (*new_vtx));// TODO should be by far enough -> could be optimzed
// TODO should be by far enough -> could be optimzed
h5_glb_vertex_t* new_vtx = h5_calloc(new_elems_c * 4, sizeof (*new_vtx));
int new_vtx_c = 0;
+5
View File
@@ -37,6 +37,11 @@ h5tpriv_alloc_loc_elems (
return m->methods->store->alloc_loc_elems (m, cur, new);
}
h5_loc_idx_t
h5tpriv_add_cell (
h5t_mesh_t* const, const h5_loc_idx_t, const h5_loc_idx_t*, const h5_weight_t*);
static inline h5_loc_idx_t
h5tpriv_refine_elem (
h5t_mesh_t * const m,
+35 -9
View File
@@ -126,7 +126,7 @@ pre_refine_tet (
H5_PRIV_FUNC_ENTER (h5_err_t, "m=%p", m);
unsigned int num_interior_elems_to_refine = m->marked_entities->num_items;
TRY (h5t_begin_store_vertices (m, num_interior_elems_to_refine*3 + 192));
TRY (h5t_begin_store_elems (m, num_interior_elems_to_refine*8, m->num_weights));
TRY (h5t_begin_store_elems (m, num_interior_elems_to_refine*8));
H5_PRIV_FUNC_RETURN (H5_SUCCESS);
}
@@ -170,61 +170,87 @@ refine_tet (
// add new tets
h5_loc_idx_t new_elem[4];
/*
Add refined cells with pre-sorted vertices!
This is actually importend: sorting refined cells may produce wrong
orientated cells. This can easily be shown with triangle:
0
*
*4
2*
*2
*
* 5
1
The parent triangle is (0,1,2) with a counter-clockwise orientation.
Since we must use an epsilon comparision, we run into a problem, if
the comparision returns X(0) < X(1), but X(0) == X(2). This happens,
if
X(0) - X(1) < 2*epsilon
The refined triangle (0,2,4) would be stored as (2,0,4), if we try
to sort the vertices. The orientation of (2,0,4) is clockwise! But
we assume that (0,2,4), (2,1,5) and (4,5,2) have the same orientation
as the parent and (2,4,5) the opposite orientation.
*/
// child 0
new_elem[0] = vertices[0]; // vertex 0
new_elem[1] = vertices[4]; // split point (0,1)
new_elem[2] = vertices[5]; // split point (0,2)
new_elem[3] = vertices[7]; // split point (0,3)
TRY( elem_idx_of_first_child = h5t_store_elem (m, elem_idx, new_elem, NULL) ); //TODO check use of h5t_store_elem2
TRY (elem_idx_of_first_child = h5tpriv_add_cell (m, elem_idx, new_elem, NULL));
// child 1
new_elem[0] = vertices[4]; // split point (0,1)
new_elem[1] = vertices[1]; // vertex 1
new_elem[2] = vertices[6]; // split point (1,2)
new_elem[3] = vertices[8]; // split point (1,3)
TRY( h5t_store_elem (m, elem_idx, new_elem, NULL) ); //TODO check use of h5t_store_elem2
TRY (h5tpriv_add_cell (m, elem_idx, new_elem, NULL));
// child 2
new_elem[0] = vertices[5]; // split point (0,2)
new_elem[1] = vertices[6]; // split point (1,2)
new_elem[2] = vertices[2]; // vertex 2
new_elem[3] = vertices[9]; // split point (2,3)
TRY( h5t_store_elem (m, elem_idx, new_elem, NULL) ); //TODO check use of h5t_store_elem2
TRY (h5tpriv_add_cell (m, elem_idx, new_elem, NULL));
// child 3
new_elem[0] = vertices[7]; // split point (0,3)
new_elem[1] = vertices[8]; // split point (1,3)
new_elem[2] = vertices[9]; // split point (2,3)
new_elem[3] = vertices[3]; // vertex 3
TRY( h5t_store_elem (m, elem_idx, new_elem, NULL) );//TODO check use of h5t_store_elem2
TRY (h5tpriv_add_cell (m, elem_idx, new_elem, NULL));
// child 4
new_elem[0] = vertices[4]; // split point (0,1)
new_elem[1] = vertices[5]; // split point (0,2)
new_elem[2] = vertices[6]; // split point (1,2)
new_elem[3] = vertices[8]; // split point (1,3)
TRY( h5t_store_elem (m, elem_idx, new_elem, NULL) );//TODO check use of h5t_store_elem2
TRY (h5tpriv_add_cell (m, elem_idx, new_elem, NULL));
// child 5
new_elem[0] = vertices[4]; // split point (0,1)
new_elem[1] = vertices[5]; // split point (0,2)
new_elem[2] = vertices[7]; // split point (0,3)
new_elem[3] = vertices[8]; // split point (1,3)
TRY( h5t_store_elem (m, elem_idx, new_elem, NULL) );//TODO check use of h5t_store_elem2
TRY (h5tpriv_add_cell (m, elem_idx, new_elem, NULL));
// child 6
new_elem[0] = vertices[5]; // split point (0,2)
new_elem[1] = vertices[6]; // split point (1,2)
new_elem[2] = vertices[8]; // split point (1,3)
new_elem[3] = vertices[9]; // split point (2,3)
TRY( h5t_store_elem (m, elem_idx, new_elem, NULL) );//TODO check use of h5t_store_elem2
TRY (h5tpriv_add_cell (m, elem_idx, new_elem, NULL));
// child 7
new_elem[0] = vertices[5]; // split point (0,2)
new_elem[1] = vertices[7]; // split point (0,3)
new_elem[2] = vertices[8]; // split point (1,3)
new_elem[3] = vertices[9]; // split point (2,3)
TRY( h5t_store_elem (m, elem_idx, new_elem, NULL) );//TODO check use of h5t_store_elem2
TRY (h5tpriv_add_cell (m, elem_idx, new_elem, NULL));
((h5_loc_tet_t*)m->loc_elems)[elem_idx].child_idx = elem_idx_of_first_child;
m->num_interior_leaf_elems[m->leaf_level]--;
+5 -5
View File
@@ -108,7 +108,7 @@ pre_refine_triangle (
H5_PRIV_FUNC_ENTER (h5_err_t, "m=%p", m);
unsigned int num_interior_elems_to_refine = m->marked_entities->num_items;
TRY (h5t_begin_store_vertices (m, num_interior_elems_to_refine*3 + 64));
TRY (h5t_begin_store_elems (m, num_interior_elems_to_refine*4, m->num_weights));
TRY (h5t_begin_store_elems (m, num_interior_elems_to_refine*4));
H5_PRIV_FUNC_RETURN (H5_SUCCESS);
}
@@ -149,22 +149,22 @@ refine_triangle (
new_elem[0] = vertices[0]; // V[0] < V[3] , V[4]
new_elem[1] = vertices[3];
new_elem[2] = vertices[4];
TRY( elem_idx_of_first_child = h5t_store_elem (m, elem_idx, new_elem, NULL) );
TRY (elem_idx_of_first_child = h5tpriv_add_cell (m, elem_idx, new_elem, NULL));
new_elem[0] = vertices[3]; // V[3] < V[1] , V[5]
new_elem[1] = vertices[1];
new_elem[2] = vertices[5];
TRY( h5t_store_elem (m, elem_idx, new_elem, NULL) );
TRY (h5tpriv_add_cell (m, elem_idx, new_elem, NULL));
new_elem[0] = vertices[4]; // V[4] < V[5] , V[2]
new_elem[1] = vertices[5];
new_elem[2] = vertices[2];
TRY( h5t_store_elem (m, elem_idx, new_elem, NULL) );
TRY (h5tpriv_add_cell (m, elem_idx, new_elem, NULL));
new_elem[0] = vertices[3]; // V[3] < V[4] , V[5]
new_elem[1] = vertices[5];
new_elem[2] = vertices[4]; // TODO check if that ordering is correct!
TRY( h5t_store_elem (m, elem_idx, new_elem, NULL) );
TRY (h5tpriv_add_cell (m, elem_idx, new_elem, NULL));
((h5_loc_tri_t*)m->loc_elems)[elem_idx].child_idx = elem_idx_of_first_child;
m->num_interior_leaf_elems[m->leaf_level]--;
+6 -4
View File
@@ -29,7 +29,7 @@
static h5_err_t
read_dataset (
h5t_mesh_t* const m,
h5t_mesh_t* const m,
const h5_file_p f,
hid_t dset_id,
h5_dsinfo_t* dsinfo,
@@ -421,11 +421,13 @@ read_tagset (
TRY (dset_id = hdf5_open_dataset (loc_id, "elems"));
TRY (num_interior_elems = hdf5_get_npoints_of_dataset (dset_id));
TRY (elems = h5_calloc (num_interior_elems, sizeof(*elems)));
h5_dsinfo_t dsinfo;
memset (&dsinfo, 0, sizeof (dsinfo));
dsinfo.type_id = h5_dta_types.h5t_glb_tag_idx_t;
TRY (h5priv_read_dataset (
tagset->m->f,
TRY (read_dataset (
tagset->m,
tagset->m->f,
dset_id,
&dsinfo,
open_space_all,
@@ -442,7 +444,7 @@ read_tagset (
TRY (num_entities = hdf5_get_npoints_of_dataset (dset_id));
TRY (entities = h5_calloc (num_entities, sizeof(*entities)));
TRY (read_dataset (
tagset->m,
tagset->m,
tagset->m->f,
dset_id,
&dsinfo,
-4
View File
@@ -215,10 +215,6 @@ static inline H5SetThrottle (
H5_API_RETURN (h5_set_throttle(f, factor));
}
#endif // PARALLEL_IO
#ifdef __cplusplus
}
#endif
/*!
\ingroup h5hut_file
-9
View File
@@ -109,15 +109,6 @@ H5FedSetMeshChanged (
H5_API_RETURN (h5t_set_mesh_changed (m));
}
static inline h5_err_t
H5FedLinkMeshToStep (
h5_file_t* const m,
const h5_id_t mesh_id
) {
H5_API_ENTER (h5_err_t, "m=%p, mesh_id=%lld", m, (long long)mesh_id);
H5_API_RETURN (h5_error_not_implemented ());
}
#ifdef __cplusplus
}
#endif
+25 -10
View File
@@ -28,7 +28,7 @@ H5FedAddTetrahedralMesh (
H5_API_ENTER (h5_err_t,
"f=%p, name=%s, mesh=%p",
(h5_file_p)f, name, mesh);
H5_API_RETURN (h5t_add_tetrahedral_mesh (f, name, mesh));
H5_API_RETURN (h5t_add_tetrahedral_mesh (f, name, 0, mesh));
}
static inline h5_err_t
@@ -40,7 +40,7 @@ H5FedAddChunkedTetrahedralMesh (
H5_API_ENTER (h5_err_t,
"f=%p, name=%s, mesh=%p",
(h5_file_p)f, name, mesh);
H5_API_RETURN (h5t_add_chunked_tetrahedral_mesh (f, name, mesh));
H5_API_RETURN (h5t_add_chunked_tetrahedral_mesh (f, name, 0, mesh));
}
@@ -53,7 +53,7 @@ H5FedAddTriangleMesh (
H5_API_ENTER (h5_err_t,
"f=%p, name=%s, mesh=%p",
(h5_file_p)f, name, mesh);
H5_API_RETURN (h5t_add_triangle_mesh (f, name, mesh));
H5_API_RETURN (h5t_add_triangle_mesh (f, name, 0, mesh));
}
static inline h5_err_t
@@ -65,8 +65,9 @@ H5FedAddChunkedTriangleMesh (
H5_API_ENTER(h5_err_t,
"f=%p, name=%s, mesh=%p",
(h5_file_p)f, name, mesh);
H5_API_RETURN (h5t_add_chunked_triangle_mesh (f, name, mesh));
H5_API_RETURN (h5t_add_chunked_triangle_mesh (f, name, 0, mesh));
}
/*!
\ingroup h5fed_c_api
@@ -136,13 +137,12 @@ H5FedEndStoreVertices (
static inline h5_err_t
H5FedBeginStoreElements (
h5t_mesh_t* const m,
const h5_size_t num,
const h5_weight_t num_weights
const h5_size_t num
) {
H5_API_ENTER (h5_err_t,
"m=%p, num=%llu, num_weights=%d",
m, (long long unsigned)num, num_weights);
H5_API_RETURN (h5t_begin_store_elems (m, num, num_weights));
"m=%p, num=%llu",
m, (long long unsigned)num);
H5_API_RETURN (h5t_begin_store_elems (m, num));
}
/*!
@@ -161,6 +161,21 @@ H5FedBeginStoreElements (
*/
static inline h5_loc_idx_t
H5FedStoreElement (
h5t_mesh_t* const m, /*!< file handle */
const h5_loc_idx_t local_vids[] /*!< tuple with vertex id's */
) {
H5_API_ENTER (h5_loc_idx_t, "m=%p, local_vids=%p", m, local_vids);
if (h5t_get_level (m) != 0) {
H5_API_LEAVE (
h5_error (
H5_ERR_INVAL,
"Elements can be added to level 0 only!"));
}
H5_API_RETURN (h5t_add_lvl0_cell (m, local_vids, NULL));
}
static inline h5_loc_idx_t
H5FedStoreWeightedElement (
h5t_mesh_t* const m, /*!< file handle */
const h5_loc_idx_t local_vids[], /*!< tuple with vertex id's */
const h5_weight_t weights[] // tuple with weights
@@ -172,7 +187,7 @@ H5FedStoreElement (
H5_ERR_INVAL,
"Elements can be added to level 0 only!"));
}
H5_API_RETURN (h5t_store_elem2 (m, -1, local_vids, weights));
H5_API_RETURN (h5t_add_lvl0_cell (m, local_vids, weights));
}
static inline h5_err_t
+1 -25
View File
@@ -1,29 +1,5 @@
# src/C level Makefile.am
# Header files that I wish to install in $(prefix)/include
include_HEADERS = \
../include/h5core/h5.h \
../include/h5core/h5_attribs.h \
../include/h5core/h5_debug.h \
../include/h5core/h5_errorhandling.h \
../include/h5core/h5_model.h \
../include/h5core/h5_syscall.h \
../include/h5core/h5_types.h \
../include/h5core/h5b_attribs.h \
../include/h5core/h5b_model.h \
../include/h5core/h5b_io.h \
../include/h5core/h5t_adjacencies.h \
../include/h5core/h5t_map.h \
../include/h5core/h5t_model.h \
../include/h5core/h5t_retrieve.h \
../include/h5core/h5t_store.h \
../include/h5core/h5t_tags.h \
../include/h5core/h5u_model.h \
../include/h5core/h5u_io.h
# Listing of all possible headers that I may include
EXTRA_HEADERS =
SUBDIRS = h5core
clean-local:
$(RM) *~
$(RM) h5core/*~
-1
View File
@@ -69,7 +69,6 @@ h5_err_t
h5_close_hdf5 (
void);
h5_err_t
h5_flush_step (
const h5_file_t);
+9 -9
View File
@@ -25,21 +25,21 @@ extern "C" {
H5_O_APPEND: allows to append a new datasets to an existing file
H5_O_RDWR: dataset may exist
*/
#define H5_O_RDWR 0x001
#define H5_O_RDONLY 0x002
#define H5_O_WRONLY 0x004
#define H5_O_APPEND 0x008
#define H5_O_RDWR 0x00000001
#define H5_O_RDONLY 0x00000002
#define H5_O_WRONLY 0x00000004
#define H5_O_APPEND 0x00000008
#define H5_VFD_MPIPOSIX 0x00000010
#define H5_VFD_MPIIO_IND 0x00000020
#define H5_VFD_INDEPENDENT H5_VFD_MPIIO_IND // obsolete(?)
#define H5_VFD_CORE 0x00000040
#define H5_FLUSH_FILE 0x040
#define H5_FLUSH_STEP 0x080
#define H5_FLUSH_DATASET 0x100
#define H5_FLUSH_FILE 0x00001000
#define H5_FLUSH_STEP 0x00002000
#define H5_FLUSH_DATASET 0x00004000
#define H5_FS_LUSTRE 0x200
#define H5_FS_LUSTRE 0x00010000
#define H5_ID_T H5T_NATIVE_INT64
#define H5_FLOAT64_T H5T_NATIVE_DOUBLE
-15
View File
@@ -44,21 +44,6 @@ h5t_map_glb_elem_indices2loc (
h5_loc_idx_t* loc_indices
);
h5_err_t
h5t_get_loc_vertex_index_of_vertex (
h5t_mesh_t* const m,
const h5_loc_id_t entity_id,
h5_loc_idx_t* vertex_index
);
h5_err_t
h5t_get_loc_vertex_index_of_vertex2 (
h5t_mesh_t* const m,
const h5_loc_idx_t face_idx,
const h5_loc_idx_t elem_idx,
h5_loc_idx_t* vertex_indices
);
h5_err_t
h5t_get_loc_vertex_indices_of_edge (
h5t_mesh_t* const m,
+53 -25
View File
@@ -42,48 +42,76 @@ h5t_open_triangle_mesh_by_idx (
h5_err_t
h5t_open_triangle_mesh_part (
const h5_file_t, const char*, h5t_mesh_t** mesh,
const h5_file_t, const char*, h5t_mesh_t**,
h5_glb_idx_t*, h5_glb_idx_t);
h5_lvl_idx_t h5t_is_chunked (h5t_mesh_t* const);
h5_lvl_idx_t
h5t_is_chunked (
h5t_mesh_t* const);
h5_ssize_t h5t_get_num_trimeshes (const h5_file_t f);
h5_ssize_t
h5t_get_num_trimeshes (
const h5_file_t f);
h5_ssize_t h5t_get_num_leaf_levels (h5t_mesh_t* const);
h5_ssize_t
h5t_get_num_leaf_levels (
h5t_mesh_t* const);
h5_ssize_t h5t_get_num_vertices (h5t_mesh_t* const, const h5_id_t);
h5_ssize_t
h5t_get_num_vertices (
h5t_mesh_t* const, const h5_id_t);
h5_ssize_t h5t_get_num_leaf_elems (h5t_mesh_t* const, const h5_id_t);
h5_ssize_t
h5t_get_num_leaf_elems (
h5t_mesh_t* const, const h5_id_t);
h5_id_t h5t_add_chunked_tetrahedral_mesh (const h5_file_t, const char* name, h5t_mesh_t**);
h5_id_t
h5t_add_chunked_tetrahedral_mesh (
const h5_file_t, const char*, const h5_weight_t, h5t_mesh_t**);
h5_id_t h5t_add_triangle_mesh (const h5_file_t, const char*, h5t_mesh_t**);
h5_id_t
h5t_add_chunked_triangle_mesh (
const h5_file_t, const char*, const h5_weight_t, h5t_mesh_t**);
h5_id_t h5t_add_chunked_triangle_mesh (const h5_file_t, const char*, h5t_mesh_t**);
h5_lvl_idx_t
h5t_get_level (
h5t_mesh_t* const);
h5_lvl_idx_t h5t_get_level (h5t_mesh_t* const);
h5_err_t
h5t_open_tetrahedral_mesh (
const h5_file_t, const char*, h5t_mesh_t**);
h5_err_t h5t_open_tetrahedral_mesh (const h5_file_t ,
const char*, h5t_mesh_t**);
h5_err_t h5t_open_tetrahedral_mesh_by_idx (const h5_file_t ,
const h5_id_t, h5t_mesh_t**);
h5_err_t
h5t_open_tetrahedral_mesh_by_idx (
const h5_file_t, const h5_id_t, h5t_mesh_t**);
h5_err_t h5t_open_triangle_mesh (const h5_file_t,
const char*, h5t_mesh_t**);
h5_err_t h5t_open_triangle_mesh_by_idx (const h5_file_t,
const h5_id_t, h5t_mesh_t**);
h5_id_t h5t_add_tetrahedral_mesh (const h5_file_t,
const char* name, h5t_mesh_t**);
h5_id_t h5t_add_triangle_mesh (const h5_file_t,
const char*, h5t_mesh_t**);
h5_err_t
h5t_open_triangle_mesh (
const h5_file_t, const char*, h5t_mesh_t**);
h5_err_t h5t_set_level (h5t_mesh_t* const, const h5_lvl_idx_t);
h5_err_t
h5t_open_triangle_mesh_by_idx (
const h5_file_t, const h5_id_t, h5t_mesh_t**);
h5_err_t h5t_set_mesh_changed (h5t_mesh_t* const m);
h5_id_t
h5t_add_tetrahedral_mesh (
const h5_file_t, const char*, const h5_weight_t, h5t_mesh_t**);
h5_err_t h5t_close_mesh (h5t_mesh_t* const);
h5_id_t
h5t_add_triangle_mesh (
const h5_file_t, const char*, const h5_weight_t, h5t_mesh_t**);
h5_err_t
h5t_set_level (
h5t_mesh_t* const, const h5_lvl_idx_t);
h5_err_t
h5t_set_mesh_changed (
h5t_mesh_t* const m);
h5_err_t
h5t_close_mesh (
h5t_mesh_t* const);
#ifdef __cplusplus
}
+3 -7
View File
@@ -30,15 +30,11 @@ h5t_end_store_vertices (
h5_err_t
h5t_begin_store_elems (
h5t_mesh_t* const, const h5_size_t, const h5_weight_t);
h5t_mesh_t* const, const h5_size_t);
h5_loc_idx_t
h5t_store_elem (
h5t_mesh_t* const, const h5_loc_idx_t, const h5_loc_idx_t*, const h5_weight_t*);
h5_loc_idx_t
h5t_store_elem2 (
h5t_mesh_t* const, const h5_loc_idx_t, const h5_loc_idx_t*, const h5_weight_t*);
h5t_add_lvl0_cell (
h5t_mesh_t* const, const h5_loc_idx_t*, const h5_weight_t*);
h5_err_t
h5t_end_store_elems (
+1 -1
View File
@@ -41,7 +41,7 @@ h5u_set_num_particles (
h5_err_t
h5u_has_view (
const const h5_file_t);
const h5_file_t);
h5_err_t
h5u_reset_view (