This commit is contained in:
2010-04-15 16:00:41 +00:00
parent 4cb0c1bcfe
commit 462fb26ba4
48 changed files with 1154 additions and 1447 deletions
+2 -4
View File
@@ -47,9 +47,7 @@ EXTRA_HEADERS = \
h5_types.h \
h5b_errorhandling_private.h \
h5t_adjacencies.h \
h5t_adjacencies_private.h \
h5t_boundaries.h \
h5t_boundaries_private.h \
h5t_tetm_adjacencies_private.h \
h5t_consts_private.h \
h5t_errorhandling_private.h \
h5t_hsearch_private.h \
@@ -98,7 +96,7 @@ libH5_core_a_SOURCES = \
h5_readwrite.c \
h5_syscall.c \
h5t_adjacencies.c \
h5t_boundaries.c \
h5t_tetm_adjacencies.c \
h5t_consts.c \
h5t_errorhandling.c \
h5t_hsearch.c \
+22 -22
View File
@@ -38,15 +38,15 @@ h5_read_attrib (
hid_t mytype;
hsize_t nelem;
TRY ( attrib_id = _hdf_open_attribute ( f, id, attrib_name ) );
TRY ( mytype = _hdf_get_attribute_type ( f, attrib_id ) );
TRY ( space_id = _hdf_get_attribute_dataspace ( f, attrib_id ) );
TRY ( nelem = _hdf_get_npoints_of_dataspace ( f, space_id ) );
TRY ( attrib_id = h5priv_open_hdf5_attribute ( f, id, attrib_name ) );
TRY ( mytype = h5priv_get_hdf5_attribute_type ( f, attrib_id ) );
TRY ( space_id = h5priv_get_hdf5_attribute_dataspace ( f, attrib_id ) );
TRY ( nelem = h5priv_get_npoints_of_hdf5_dataspace ( f, space_id ) );
TRY ( type_id = h5_normalize_h5_type ( f, mytype ) );
TRY ( _hdf_read_attribute ( f, attrib_id, type_id, attrib_value ) );
TRY ( _hdf_close_dataspace( f, space_id ) );
TRY ( _hdf_close_type( f, mytype ) );
TRY ( _hdf_close_attribute ( f, attrib_id ) );
TRY ( h5priv_read_hdf5_attribute ( f, attrib_id, type_id, attrib_value ) );
TRY ( h5priv_close_hdf5_dataspace( f, space_id ) );
TRY ( h5priv_close_hdf5_type( f, mytype ) );
TRY ( h5priv_close_hdf5_attribute ( f, attrib_id ) );
return H5_SUCCESS;
}
@@ -70,8 +70,8 @@ h5_write_attrib (
hid_t space_id;
hid_t attrib_id;
TRY ( space_id = _hdf_create_dataspace ( f, 1, &attrib_nelem, NULL) );
TRY ( attrib_id = _hdf_create_attribute (
TRY ( space_id = h5priv_create_hdf5_dataspace ( f, 1, &attrib_nelem, NULL) );
TRY ( attrib_id = h5priv_create_hdf5_attribute (
f,
id,
attrib_name,
@@ -79,9 +79,9 @@ h5_write_attrib (
space_id,
H5P_DEFAULT, H5P_DEFAULT ) );
TRY ( _hdf_write_attribute ( f, attrib_id, attrib_type, attrib_value ) );
TRY ( _hdf_close_attribute ( f, attrib_id ) );
TRY ( _hdf_close_dataspace ( f, space_id ) );
TRY ( h5priv_write_hdf5_attribute ( f, attrib_id, attrib_type, attrib_value ) );
TRY ( h5priv_close_hdf5_attribute ( f, attrib_id ) );
TRY ( h5priv_close_hdf5_dataspace ( f, space_id ) );
return H5_SUCCESS;
}
@@ -107,30 +107,30 @@ h5_get_attrib_info (
hid_t mytype;
hid_t space_id;
TRY ( attrib_id = _hdf_open_attribute_idx (
TRY ( attrib_id = h5priv_open_hdf5_attribute_idx (
f,
id,
(unsigned int)attrib_idx ) );
if ( attrib_nelem ) {
TRY ( space_id = _hdf_get_attribute_dataspace ( f, attrib_id ) );
TRY ( *attrib_nelem = _hdf_get_npoints_of_dataspace (
TRY ( space_id = h5priv_get_hdf5_attribute_dataspace ( f, attrib_id ) );
TRY ( *attrib_nelem = h5priv_get_npoints_of_hdf5_dataspace (
f, space_id ) );
TRY( _hdf_close_dataspace( f, space_id ) );
TRY( h5priv_close_hdf5_dataspace( f, space_id ) );
}
if ( attrib_name ) {
TRY ( _hdf_get_attribute_name (
TRY ( h5priv_get_hdf5_attribute_name (
f,
attrib_id,
(size_t)len_attrib_name,
attrib_name ) );
}
if ( attrib_type ) {
TRY ( mytype = _hdf_get_attribute_type ( f, attrib_id ) );
TRY ( mytype = h5priv_get_hdf5_attribute_type ( f, attrib_id ) );
TRY ( *attrib_type = h5_normalize_h5_type ( f, mytype ) );
TRY ( _hdf_close_type( f, mytype ) );
TRY ( h5priv_close_hdf5_type( f, mytype ) );
}
TRY ( _hdf_close_attribute ( f, attrib_id ) );
TRY ( h5priv_close_hdf5_attribute ( f, attrib_id ) );
return H5_SUCCESS;
}
@@ -148,5 +148,5 @@ h5_get_num_attribs (
const hid_t id
) {
CHECK_FILEHANDLE ( f );
return _hdf_get_num_attributes ( f, id );
return h5priv_get_num_hdf5_attribute ( f, id );
}
+13 -13
View File
@@ -9,8 +9,8 @@
#include "h5_core.h"
#include "h5_core_private.h"
static h5_errorhandler_t _h5_errhandler = h5_report_errorhandler;
static h5_int32_t _h5_debuglevel = 0;
static h5_errorhandler_t h5priv_errhandler = h5_report_errorhandler;
static h5_int32_t h5priv_debuglevel = 0;
/*!
\ingroup h5_core
@@ -44,7 +44,7 @@ h5_set_debuglevel (
h5_id_t debuglevel /*!< debug level */
) {
if ( debuglevel < 0 || debuglevel > 5 ) return H5_ERR_INVAL;
_h5_debuglevel = debuglevel;
h5priv_debuglevel = debuglevel;
return H5_SUCCESS;
}
@@ -59,7 +59,7 @@ h5_id_t
h5_get_debuglevel (
void
) {
return _h5_debuglevel;
return h5priv_debuglevel;
}
/*!
@@ -73,7 +73,7 @@ h5_err_t
h5_set_errorhandler (
h5_errorhandler_t handler
) {
_h5_errhandler = handler;
h5priv_errhandler = handler;
return H5_SUCCESS;
}
@@ -88,7 +88,7 @@ h5_errorhandler_t
h5_get_errorhandler (
void
) {
return _h5_errhandler;
return h5priv_errhandler;
}
/*!
@@ -136,7 +136,7 @@ h5_report_errorhandler (
va_list ap
) {
if ( _h5_debuglevel > 0 ) {
if ( h5priv_debuglevel > 0 ) {
h5_verror ( f, fmt, ap );
}
return f->__errno;
@@ -155,7 +155,7 @@ h5_abort_errorhandler (
va_list ap
) {
if ( _h5_debuglevel > 0 ) {
if ( h5priv_debuglevel > 0 ) {
h5_verror ( f, fmt, ap );
}
exit (-(int)f->__errno);
@@ -197,7 +197,7 @@ h5_error (
va_list ap;
va_start ( ap, fmt );
(*_h5_errhandler)( f, fmt, ap );
(*h5priv_errhandler)( f, fmt, ap );
va_end ( ap );
return f->__errno;
@@ -215,7 +215,7 @@ h5_verror (
va_list ap
) {
if ( _h5_debuglevel < 1 ) return;
if ( h5priv_debuglevel < 1 ) return;
_vprintf ( stderr, "E", f->__funcname, fmt, ap );
}
@@ -232,7 +232,7 @@ h5_vwarn (
va_list ap
) {
if ( _h5_debuglevel < 2 ) return;
if ( h5priv_debuglevel < 2 ) return;
_vprintf ( stderr, "W", f->__funcname, fmt, ap );
}
@@ -266,7 +266,7 @@ h5_vinfo (
va_list ap
) {
if ( _h5_debuglevel < 3 ) return;
if ( h5priv_debuglevel < 3 ) return;
_vprintf ( stdout, "I", f->__funcname, fmt, ap );
}
@@ -300,7 +300,7 @@ h5_vdebug (
va_list ap
) {
if ( _h5_debuglevel < 4 ) return;
if ( h5priv_debuglevel < 4 ) return;
_vprintf ( stdout, "D", f->__funcname, fmt, ap );
}
+1 -1
View File
@@ -30,7 +30,7 @@
/**************** H5 *********************/
#define _h5_handle_file_mode_error( f, mode_id ) \
#define h5priv_handle_file_mode_error( f, mode_id ) \
h5_error( \
f, \
H5_ERR_BADF, \
+1 -1
View File
@@ -9,7 +9,7 @@
for a detailed explanation.
*/
h5_int64_t
_h5_fcmp (
h5priv_fcmp (
h5_float64_t A,
h5_float64_t B,
h5_int32_t maxUlps ) {
+1 -1
View File
@@ -2,7 +2,7 @@
#define __H5_FCMP_H
h5_int64_t
_h5_fcmp (
h5priv_fcmp (
h5_float64_t A,
h5_float64_t B,
h5_int32_t maxUlps );
+75 -55
View File
@@ -6,7 +6,7 @@
/****** G r o u p ************************************************************/
hid_t
_hdf_open_group (
h5priv_open_hdf5_group (
h5_file_t * f,
const hid_t loc_id,
const char * const group_name
@@ -23,12 +23,13 @@ _hdf_open_group (
}
hid_t
_hdf_create_group (
h5priv_create_hdf5_group (
h5_file_t * f,
const hid_t loc_id,
const char * const group_name
) {
hid_t group_id = H5Gcreate ( loc_id, group_name, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT );
hid_t group_id = H5Gcreate (
loc_id, group_name, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT );
if ( group_id < 0 )
return h5_error (
f,
@@ -47,7 +48,7 @@ _hdf_create_group (
\param[in] group_name name of group to open
*/
hid_t
_h5_open_group (
h5priv_open_group (
h5_file_t * f,
const hid_t loc_id,
const char * const group_name
@@ -100,7 +101,7 @@ _h5_open_group (
\param[in] group_id id of group to close
*/
h5_err_t
_hdf_close_group (
h5priv_close_hdf5_group (
h5_file_t * const f,
const hid_t group_id
) {
@@ -116,7 +117,7 @@ _hdf_close_group (
}
hsize_t
_hdf_get_num_objs_in_group (
h5priv_get_num_objs_in_hdf5_group (
h5_file_t * const f,
const hid_t group_id
) {
@@ -132,7 +133,7 @@ _hdf_get_num_objs_in_group (
}
h5_err_t
_hdf_get_objname_by_idx_in_group (
h5priv_get_objname_by_idx_in_hdf5_group (
h5_file_t * const f,
hid_t loc_id,
hsize_t idx,
@@ -142,7 +143,7 @@ _hdf_get_objname_by_idx_in_group (
size = H5Gget_objname_by_idx ( loc_id, idx, NULL, 0 ) + 1;
if ( size < 0 ) goto error;
*name = _h5_calloc ( f, 1, size );
*name = h5priv_calloc ( f, 1, size );
if ( *name == NULL ) goto error;
size = H5Gget_objname_by_idx ( loc_id, idx, *name, size );
@@ -168,7 +169,7 @@ error:
\param[in] dataset_name name of dataset to open
*/
hid_t
_hdf_open_dataset (
h5priv_open_hdf5_dataset (
h5_file_t * const f,
const hid_t loc_id,
const char * const dataset_name
@@ -200,7 +201,7 @@ _hdf_open_dataset (
*/
hid_t
_hdf_create_dataset (
h5priv_create_hdf5_dataset (
h5_file_t * const f,
hid_t loc_id,
const char * dataset_name,
@@ -233,7 +234,7 @@ _hdf_create_dataset (
\param[in] dataset_id id of dataset to close
*/
herr_t
_hdf_close_dataset (
h5priv_close_hdf5_dataset (
h5_file_t * const f,
const hid_t dset_id
) {
@@ -257,7 +258,7 @@ _hdf_close_dataset (
*/
hid_t
_hdf_get_dataset_space (
h5priv_get_hdf5_dataset_space (
h5_file_t * const f,
const hid_t dataset_id
) {
@@ -285,7 +286,7 @@ _hdf_get_dataset_space (
*/
herr_t
_hdf_write_dataset (
h5priv_write_hdf5_dataset (
h5_file_t * const f,
const hid_t dataset_id,
const hid_t type_id,
@@ -315,7 +316,7 @@ _hdf_write_dataset (
Wrapper for H5Dread
*/
h5_err_t
_hdf_read_dataset (
h5priv_read_hdf5_dataset (
h5_file_t * const f,
const hid_t dataset_id,
const hid_t type_id,
@@ -342,7 +343,7 @@ _hdf_read_dataset (
}
hid_t
_hdf_get_dataset_type (
h5priv_get_hdf5_dataset_type (
h5_file_t * const f,
const hid_t dataset_id
) {
@@ -358,7 +359,7 @@ _hdf_get_dataset_type (
herr_t
_hdf_set_dataset_extent (
h5priv_set_hdf5_dataset_extent (
h5_file_t * const f,
hid_t dset_id,
const hsize_t *size
@@ -376,29 +377,29 @@ _hdf_set_dataset_extent (
}
hssize_t
_hdf_get_npoints_of_dataset (
h5priv_get_npoints_of_hdf5_dataset (
h5_file_t * const f,
hid_t dset_id
) {
hid_t dspace_id;
hsize_t size;
TRY ( dspace_id = _hdf_get_dataset_space ( f, dset_id ) );
TRY ( size = _hdf_get_npoints_of_dataspace ( f, dspace_id ) );
TRY ( _hdf_close_dataspace( f, dspace_id ) );
TRY ( dspace_id = h5priv_get_hdf5_dataset_space ( f, dset_id ) );
TRY ( size = h5priv_get_npoints_of_hdf5_dataspace ( f, dspace_id ) );
TRY ( h5priv_close_hdf5_dataspace( f, dspace_id ) );
return size;
}
hssize_t
_hdf_get_npoints_of_dataset_by_name (
h5priv_get_npoints_of_hdf5_dataset_by_name (
h5_file_t * const f,
hid_t loc_id,
char * name
) {
hid_t dset_id;
hsize_t size;
TRY ( dset_id = _hdf_open_dataset ( f, loc_id, name ) );
TRY ( size = _hdf_get_npoints_of_dataset ( f, dset_id ) );
TRY ( _hdf_close_dataset ( f, dset_id ) );
TRY ( dset_id = h5priv_open_hdf5_dataset ( f, loc_id, name ) );
TRY ( size = h5priv_get_npoints_of_hdf5_dataset ( f, dset_id ) );
TRY ( h5priv_close_hdf5_dataset ( f, dset_id ) );
return size;
}
@@ -414,7 +415,7 @@ _hdf_get_npoints_of_dataset_by_name (
*/
hid_t
_hdf_create_dataspace (
h5priv_create_hdf5_dataspace (
h5_file_t * const f,
const int rank,
const hsize_t * dims,
@@ -431,7 +432,7 @@ _hdf_create_dataspace (
}
herr_t
_hdf_select_hyperslab_of_dataspace (
h5priv_select_hyperslab_of_hdf5_dataspace (
h5_file_t * const f,
hid_t space_id,
H5S_seloper_t op,
@@ -457,7 +458,7 @@ _hdf_select_hyperslab_of_dataspace (
}
hssize_t
_hdf_get_selected_npoints_of_dataspace (
h5priv_get_selected_npoints_of_hdf5_dataspace (
h5_file_t * const f,
hid_t space_id
) {
@@ -471,7 +472,7 @@ _hdf_get_selected_npoints_of_dataspace (
}
hssize_t
_hdf_get_npoints_of_dataspace (
h5priv_get_npoints_of_hdf5_dataspace (
h5_file_t * const f,
hid_t space_id
) {
@@ -485,7 +486,7 @@ _hdf_get_npoints_of_dataspace (
}
int
_hdf_get_dims_of_dataspace (
h5priv_get_dims_of_hdf5_dataspace (
h5_file_t * const f,
hid_t space_id,
hsize_t *dims,
@@ -508,7 +509,7 @@ _hdf_get_dims_of_dataspace (
\param[in] dataspace_id id of space to close
*/
herr_t
_hdf_close_dataspace (
h5priv_close_hdf5_dataspace (
h5_file_t * const f,
const hid_t dataspace_id
) {
@@ -529,7 +530,7 @@ _hdf_close_dataspace (
/****** D a t a t y p e ******************************************************/
static const char*
_get_base_type_name (
get_base_type_name (
h5_file_t * const f,
hid_t base_type_id
) {
@@ -542,7 +543,7 @@ _get_base_type_name (
}
static const char*
_get_class_type_name (
get_class_type_name (
h5_file_t * const f,
hid_t base_type_id
) {
@@ -560,7 +561,7 @@ _get_class_type_name (
\param[in] dims dimensions
*/
hid_t
_hdf_create_array_type (
h5priv_create_hdf5_array_type (
h5_file_t * const f,
hid_t base_type_id,
int rank,
@@ -573,14 +574,14 @@ _hdf_create_array_type (
H5_ERR_HDF5,
"Can't create array datatype object with base "
"type %s and rank %d",
_get_base_type_name ( f, base_type_id ),
get_base_type_name ( f, base_type_id ),
rank );
}
return type_id;
}
hid_t
_hdf_create_type (
h5priv_create_hdf5_type (
h5_file_t * const f,
H5T_class_t class,
const size_t size
@@ -591,14 +592,14 @@ _hdf_create_type (
f,
H5_ERR_HDF5,
"Can't create datatype object of class %s.",
_get_class_type_name ( f, class )
get_class_type_name ( f, class )
);
}
return type_id;
}
herr_t
_hdf_insert_type (
h5priv_insert_hdf5_type (
h5_file_t * const f,
hid_t dtype_id,
const char * name,
@@ -616,7 +617,7 @@ _hdf_insert_type (
}
herr_t
_hdf_close_type (
h5priv_close_hdf5_type (
h5_file_t * const f,
hid_t dtype_id
) {
@@ -632,7 +633,7 @@ _hdf_close_type (
/****** P r o p e r t y ******************************************************/
hid_t
_hdf_create_property (
h5priv_create_hdf5_property (
h5_file_t * const f,
hid_t cls_id
) {
@@ -646,7 +647,7 @@ _hdf_create_property (
}
herr_t
_hdf_set_chunk_property (
h5priv_set_hdf5_chunk_property (
h5_file_t * const f,
hid_t plist,
int rank,
@@ -663,7 +664,7 @@ _hdf_set_chunk_property (
#ifdef PARALLEL_IO
h5_err_t
_hdf_set_fapl_mpio_property (
h5priv_set_hdf5_fapl_mpio_property (
h5_file_t * const f,
hid_t fapl_id,
MPI_Comm comm,
@@ -681,7 +682,7 @@ _hdf_set_fapl_mpio_property (
#endif
h5_err_t
_hdf_close_property (
h5priv_close_hdf5_property (
h5_file_t * const f,
hid_t prop
) {
@@ -697,7 +698,7 @@ _hdf_close_property (
/****** F i l e **************************************************************/
herr_t
_hdf_close_file (
h5priv_close_hdf5_file (
h5_file_t * const f,
hid_t fileid
) {
@@ -713,7 +714,7 @@ _hdf_close_file (
/****** E r r o r h a n d l i n g ********************************************/
herr_t
_hdf_set_errorhandler (
h5priv_set_hdf5_errorhandler (
h5_file_t * const f,
hid_t estack_id,
H5E_auto_t func,
@@ -730,7 +731,7 @@ _hdf_set_errorhandler (
/****** A t t r i b u t e ****************************************************/
hid_t
_hdf_open_attribute (
h5priv_open_hdf5_attribute (
h5_file_t * const f,
hid_t loc_id,
const char *attr_name
@@ -747,7 +748,7 @@ _hdf_open_attribute (
}
hid_t
_hdf_open_attribute_idx (
h5priv_open_hdf5_attribute_idx (
h5_file_t * const f,
hid_t loc_id,
unsigned int idx
@@ -764,7 +765,7 @@ _hdf_open_attribute_idx (
}
hid_t
_hdf_open_attribute_by_name (
h5priv_open_hdf5_attribute_by_name (
h5_file_t * const f,
hid_t loc_id,
const char *obj_name,
@@ -787,7 +788,7 @@ _hdf_open_attribute_by_name (
}
hid_t
_hdf_create_attribute (
h5priv_create_hdf5_attribute (
h5_file_t * const f,
hid_t loc_id,
const char *attr_name,
@@ -814,7 +815,7 @@ _hdf_create_attribute (
}
herr_t
_hdf_read_attribute (
h5priv_read_hdf5_attribute (
h5_file_t * const f,
hid_t attr_id,
hid_t mem_type_id,
@@ -835,7 +836,7 @@ _hdf_read_attribute (
Wrapper for H5Awrite.
*/
herr_t
_hdf_write_attribute (
h5priv_write_hdf5_attribute (
h5_file_t * const f,
hid_t attr_id,
hid_t mem_type_id,
@@ -853,7 +854,7 @@ _hdf_write_attribute (
}
ssize_t
_hdf_get_attribute_name (
h5priv_get_hdf5_attribute_name (
h5_file_t * const f,
hid_t attr_id,
size_t buf_size,
@@ -869,7 +870,7 @@ _hdf_get_attribute_name (
}
hid_t
_hdf_get_attribute_type (
h5priv_get_hdf5_attribute_type (
h5_file_t * const f,
hid_t attr_id
) {
@@ -884,7 +885,7 @@ _hdf_get_attribute_type (
}
hid_t
_hdf_get_attribute_dataspace (
h5priv_get_hdf5_attribute_dataspace (
h5_file_t * const f,
hid_t attr_id
) {
@@ -899,7 +900,7 @@ _hdf_get_attribute_dataspace (
}
int
_hdf_get_num_attributes (
h5priv_get_num_hdf5_attribute (
h5_file_t * const f,
hid_t loc_id
) {
@@ -915,7 +916,7 @@ _hdf_get_num_attributes (
herr_t
_hdf_close_attribute (
h5priv_close_hdf5_attribute (
h5_file_t * const f,
hid_t attr_id
) {
@@ -929,3 +930,22 @@ _hdf_close_attribute (
return H5_SUCCESS;
}
herr_t
h5priv_delete_hdf5_link (
h5_file_t * const f,
hid_t loc_id,
const char *name,
hid_t lapl_id
) {
herr_t herr = H5Ldelete ( loc_id, name, lapl_id );
if ( herr < 0 )
return h5_error (
f,
H5_ERR_HDF5,
"Cannot remove link %s/%s.",
h5_get_objname( loc_id ), name );
return H5_SUCCESS;
}
+52 -55
View File
@@ -3,40 +3,40 @@
/*** group ***/
hid_t
_hdf_open_group (
h5priv_open_hdf5_group (
h5_file_t *f,
const hid_t loc_id,
const char * const group_name
);
hid_t
_hdf_create_group (
h5priv_create_hdf5_group (
h5_file_t * f,
const hid_t loc_id,
const char * const group_name
);
hid_t
_h5_open_group (
h5priv_open_group (
h5_file_t *f,
const hid_t loc_id,
const char * const group_name
);
h5_err_t
_hdf_close_group (
h5priv_close_hdf5_group (
h5_file_t * const f,
const hid_t group_id
);
hsize_t
_hdf_get_num_objs_in_group (
h5priv_get_num_objs_in_hdf5_group (
h5_file_t * const f,
const hid_t group_id
);
h5_err_t
_hdf_get_objname_by_idx_in_group (
h5priv_get_objname_by_idx_in_hdf5_group (
h5_file_t * const f,
hid_t loc_id,
hsize_t idx,
@@ -44,14 +44,14 @@ _hdf_get_objname_by_idx_in_group (
/*** dataset ***/
hid_t
_hdf_open_dataset (
h5priv_open_hdf5_dataset (
h5_file_t * const f,
const hid_t gid,
const char * const dataset_name
);
hid_t
_hdf_create_dataset (
h5priv_create_hdf5_dataset (
h5_file_t * const f,
hid_t loc_id,
const char * dataset_name,
@@ -61,14 +61,14 @@ _hdf_create_dataset (
);
herr_t
_hdf_close_dataset (
h5priv_close_hdf5_dataset (
h5_file_t * const f,
const hid_t dataset_id
);
herr_t
_hdf_write_dataset (
h5priv_write_hdf5_dataset (
h5_file_t * const f,
const hid_t dataset_id,
const hid_t type_id,
@@ -79,7 +79,7 @@ _hdf_write_dataset (
);
h5_err_t
_hdf_read_dataset (
h5priv_read_hdf5_dataset (
h5_file_t * const f,
const hid_t dataset_id,
const hid_t type_id,
@@ -89,26 +89,26 @@ _hdf_read_dataset (
void * const buf );
hid_t
_hdf_get_dataset_type (
h5priv_get_hdf5_dataset_type (
h5_file_t * const f,
const hid_t dataset_id
);
herr_t
_hdf_set_dataset_extent (
h5priv_set_hdf5_dataset_extent (
h5_file_t * const f,
hid_t dset_id,
const hsize_t *size
);
hssize_t
_hdf_get_npoints_of_dataset (
h5priv_get_npoints_of_hdf5_dataset (
h5_file_t * const f,
hid_t dset_id
);
hssize_t
_hdf_get_npoints_of_dataset_by_name (
h5priv_get_npoints_of_hdf5_dataset_by_name (
h5_file_t * const f,
hid_t loc_id,
char * name
@@ -116,7 +116,7 @@ _hdf_get_npoints_of_dataset_by_name (
/*** dataspace ***/
hid_t
_hdf_create_dataspace (
h5priv_create_hdf5_dataspace (
h5_file_t * const f,
const int rank,
const hsize_t * dims,
@@ -124,13 +124,13 @@ _hdf_create_dataspace (
);
hid_t
_hdf_get_dataset_space (
h5priv_get_hdf5_dataset_space (
h5_file_t * const f,
const hid_t dataset_id
);
herr_t
_hdf_select_hyperslab_of_dataspace (
h5priv_select_hyperslab_of_hdf5_dataspace (
h5_file_t * const f,
hid_t space_id,
H5S_seloper_t op,
@@ -141,25 +141,25 @@ _hdf_select_hyperslab_of_dataspace (
);
hssize_t
_hdf_get_selected_npoints_of_dataspace (
h5priv_get_selected_npoints_of_hdf5_dataspace (
h5_file_t * const f,
hid_t space_id
);
hssize_t
_hdf_get_npoints_of_dataspace (
h5priv_get_npoints_of_hdf5_dataspace (
h5_file_t * const f,
hid_t space_id
);
herr_t
_hdf_close_dataspace (
h5priv_close_hdf5_dataspace (
h5_file_t * const f,
const hid_t dataspace_id
);
int
_hdf_get_dims_of_dataspace (
h5priv_get_dims_of_hdf5_dataspace (
h5_file_t * const f,
hid_t space_id,
hsize_t *dims,
@@ -168,7 +168,7 @@ _hdf_get_dims_of_dataspace (
/*** type ***/
hid_t
_hdf_create_array_type (
h5priv_create_hdf5_array_type (
h5_file_t * const f,
hid_t base_type_id,
int rank,
@@ -176,14 +176,14 @@ _hdf_create_array_type (
);
hid_t
_hdf_create_type (
h5priv_create_hdf5_type (
h5_file_t * const f,
H5T_class_t _class,
const size_t size
);
herr_t
_hdf_insert_type (
h5priv_insert_hdf5_type (
h5_file_t * const f,
hid_t dtype_id,
const char * name,
@@ -192,20 +192,20 @@ _hdf_insert_type (
);
herr_t
_hdf_close_type (
h5priv_close_hdf5_type (
h5_file_t * const f,
hid_t dtype_id
);
/*** property ***/
hid_t
_hdf_create_property (
h5priv_create_hdf5_property (
h5_file_t * const f,
hid_t cls_id
);
herr_t
_hdf_set_chunk_property (
h5priv_set_hdf5_chunk_property (
h5_file_t * const f,
hid_t plist,
int ndims,
@@ -214,7 +214,7 @@ _hdf_set_chunk_property (
#ifdef PARALLEL_IO
h5_err_t
_hdf_set_fapl_mpio_property (
h5priv_set_hdf5_fapl_mpio_property (
h5_file_t * const f,
hid_t fapl_id,
MPI_Comm comm,
@@ -223,21 +223,21 @@ _hdf_set_fapl_mpio_property (
#endif
h5_err_t
_hdf_close_property (
h5priv_close_hdf5_property (
h5_file_t * const f,
hid_t prop
);
/*** file ***/
herr_t
_hdf_close_file (
h5priv_close_hdf5_file (
h5_file_t * const f,
hid_t fileid
);
/*** error handling ***/
herr_t
_hdf_set_errorhandler (
h5priv_set_hdf5_errorhandler (
h5_file_t * const f,
hid_t estack_id,
H5E_auto_t func,
@@ -246,21 +246,21 @@ _hdf_set_errorhandler (
/*** attributes ***/
hid_t
_hdf_open_attribute (
h5priv_open_hdf5_attribute (
h5_file_t * const f,
hid_t loc_id,
const char *attr_name
);
hid_t
_hdf_open_attribute_idx (
h5priv_open_hdf5_attribute_idx (
h5_file_t * const f,
hid_t loc_id,
unsigned int idx
);
hid_t
_hdf_open_attribute_by_name (
h5priv_open_hdf5_attribute_by_name (
h5_file_t * const f,
hid_t loc_id,
const char *obj_name,
@@ -268,19 +268,7 @@ _hdf_open_attribute_by_name (
);
hid_t
_hdf_open_attribute_by_idx (
h5_file_t * const f,
hid_t loc_id,
const char *obj_name,
H5_index_t idx_type,
H5_iter_order_t order,
hsize_t n,
hid_t aapl_id,
hid_t lapl_id
);
hid_t
_hdf_create_attribute (
h5priv_create_hdf5_attribute (
h5_file_t * const f,
hid_t loc_id,
const char *attr_name,
@@ -291,7 +279,7 @@ _hdf_create_attribute (
);
herr_t
_hdf_read_attribute (
h5priv_read_hdf5_attribute (
h5_file_t * const f,
hid_t attr_id,
hid_t mem_type_id,
@@ -299,7 +287,7 @@ _hdf_read_attribute (
);
herr_t
_hdf_write_attribute (
h5priv_write_hdf5_attribute (
h5_file_t * const f,
hid_t attr_id,
hid_t mem_type_id,
@@ -307,7 +295,7 @@ _hdf_write_attribute (
);
ssize_t
_hdf_get_attribute_name (
h5priv_get_hdf5_attribute_name (
h5_file_t * const f,
hid_t attr_id,
size_t buf_size,
@@ -315,26 +303,35 @@ _hdf_get_attribute_name (
);
hid_t
_hdf_get_attribute_type (
h5priv_get_hdf5_attribute_type (
h5_file_t * const f,
hid_t attr_id
);
hid_t
_hdf_get_attribute_dataspace (
h5priv_get_hdf5_attribute_dataspace (
h5_file_t * const f,
hid_t attr_id
);
int
_hdf_get_num_attributes (
h5priv_get_num_hdf5_attribute (
h5_file_t * const f,
hid_t loc_id
);
herr_t
_hdf_close_attribute (
h5priv_close_hdf5_attribute (
h5_file_t * const f,
hid_t attr_id
);
/*** link ***/
herr_t
h5priv_delete_hdf5_link (
h5_file_t * const f,
hid_t loc_id,
const char *name,
hid_t lapl_id
);
#endif
+20 -15
View File
@@ -60,7 +60,7 @@ isprime (const unsigned int number) {
The contents of the table is zeroed, especially the field used
becomes zero. */
h5_err_t
_h5_hcreate (
h5priv_hcreate (
h5_file_t * const f,
size_t nel,
h5_hashtable_t *htab,
@@ -82,7 +82,7 @@ _h5_hcreate (
htab->compute_hash = compute_hash;
/* allocate memory and zero out */
TRY ( (htab->table = (_ENTRY *) _h5_calloc (
TRY ( (htab->table = (_ENTRY *) h5priv_calloc (
f, htab->size + 1, sizeof (_ENTRY)) ) );
/* everything went alright */
@@ -94,7 +94,7 @@ _h5_hcreate (
or equal the current size.
*/
h5_err_t
_h5_hresize (
h5priv_hresize (
h5_file_t * const f,
size_t nel,
h5_hashtable_t *htab
@@ -108,13 +108,13 @@ _h5_hresize (
nel += htab->size;
h5_debug ( f, "Resize hash table from %u to %lu elements.",
htab->size, nel );
TRY ( _h5_hcreate (
TRY ( h5priv_hcreate (
f, nel, &__htab, htab->compare, htab->compute_hash ) );
unsigned int idx;
for ( idx = 1; idx <= htab->size; idx++ ) {
if ( htab->table[idx].used ) {
void *ventry;
_h5_hsearch (
h5priv_hsearch (
f,
htab->table[idx].entry,
H5_ENTER,
@@ -122,14 +122,15 @@ _h5_hresize (
&__htab );
}
}
TRY ( _h5_hdestroy ( f, htab ) );
TRY ( h5priv_hdestroy ( f, htab ) );
*htab = __htab;
return H5_SUCCESS;
}
/* After using the hash table it has to be destroyed. The used memory can
be freed and the local static variable can be marked as not used. */
h5_err_t
_h5_hdestroy (
h5priv_hdestroy (
h5_file_t * const f,
struct hsearch_data *htab
) {
@@ -139,7 +140,7 @@ _h5_hdestroy (
}
/* Free used memory. */
TRY ( _h5_free ( f, htab->table ) );
TRY ( h5priv_free ( f, htab->table ) );
/* the sign for an existing table is an value != NULL in htable */
htab->table = NULL;
@@ -162,7 +163,7 @@ _h5_hdestroy (
equality of the stored and the parameter value. This helps to prevent
unnecessary expensive calls of strcmp. */
h5_err_t
_h5_hsearch (
h5priv_hsearch (
h5_file_t * const f,
void *item,
const h5_action_t action,
@@ -215,7 +216,7 @@ _h5_hsearch (
}
/* An empty bucket has been found. */
if (action == H5_ENTER) {
if ( action == H5_ENTER ) {
/* If table is full and another entry should be entered return
with error. */
if (htab->filled == htab->size) {
@@ -231,6 +232,10 @@ _h5_hsearch (
*retval = htab->table[idx].entry;
return H5_SUCCESS;
} else if ( action == H5_REMOVE ) {
htab->table[idx].used = 0; /* mark as unused, but */
*retval = htab->table[idx].entry; /* return ptr to entry */
return H5_SUCCESS;
}
*retval = NULL;
h5_error ( f, H5_ERR_INVAL, "Key not found in hash table." );
@@ -238,7 +243,7 @@ _h5_hsearch (
}
h5_err_t
_h5_hwalk (
h5priv_hwalk (
h5_file_t* f,
struct hsearch_data *htab,
h5_err_t (*visit)(h5_file_t*const f, const void *item)
@@ -282,12 +287,12 @@ _hcompute_string_keyed (
}
h5_err_t
_h5_hcreate_string_keyed (
h5priv_hcreate_string_keyed (
h5_file_t * const f,
size_t nel,
h5_hashtable_t *htab
) {
return _h5_hcreate ( f, nel, htab,
return h5priv_hcreate ( f, nel, htab,
_hcmp_string_keyed, _hcompute_string_keyed );
}
@@ -316,11 +321,11 @@ _hcompute_id_keyed (
}
h5_err_t
_h5_hcreate_id_keyed (
h5priv_hcreate_id_keyed (
h5_file_t * const f,
size_t nel,
h5_hashtable_t *htab
) {
return _h5_hcreate ( f, nel, htab,
return h5priv_hcreate ( f, nel, htab,
_hcmp_id_keyed, _hcompute_id_keyed );
}
+9 -8
View File
@@ -12,7 +12,8 @@ typedef struct hsearch_data {
/* Action which shall be performed in the call to hsearch. */
typedef enum {
H5_FIND,
H5_ENTER
H5_ENTER,
H5_REMOVE
} h5_action_t;
typedef struct h5_entry {
@@ -22,7 +23,7 @@ typedef struct h5_entry {
/* Reentrant versions which can handle multiple hashing tables at the
same time. */
extern h5_err_t
_h5_hsearch (
h5priv_hsearch (
h5_file_t * const f,
void *item,
const h5_action_t action,
@@ -31,7 +32,7 @@ _h5_hsearch (
);
extern h5_err_t
_h5_hcreate (
h5priv_hcreate (
h5_file_t* const f,
size_t __nel,
h5_hashtable_t *__htab,
@@ -40,34 +41,34 @@ _h5_hcreate (
);
extern h5_err_t
_h5_hresize (
h5priv_hresize (
h5_file_t * const f,
size_t nel,
h5_hashtable_t *htab
);
extern h5_err_t
_h5_hdestroy (
h5priv_hdestroy (
h5_file_t* f,
h5_hashtable_t *__htab
);
extern h5_err_t
_h5_hwalk (
h5priv_hwalk (
h5_file_t* f,
h5_hashtable_t *__htab,
h5_err_t (*visit)(h5_file_t*const f, const void *__item)
);
extern h5_err_t
_h5_hcreate_string_keyed (
h5priv_hcreate_string_keyed (
h5_file_t * const f,
size_t nel,
h5_hashtable_t *htab
);
h5_err_t
_h5_hcreate_id_keyed (
h5priv_hcreate_id_keyed (
h5_file_t * const f,
size_t nel,
h5_hashtable_t *htab
+29 -29
View File
@@ -7,21 +7,21 @@
#include "h5_core_private.h"
h5_err_t
_h5_alloc_idlist_items (
h5priv_alloc_idlist_items (
h5_file_t * const f,
h5_idlist_t *list,
const h5_size_t size
) {
int new = ( list->items == NULL );
size_t size_in_bytes = size * sizeof ( list->items[0] );
TRY ( list->items = _h5_alloc ( f, list->items, size_in_bytes ) );
TRY ( list->items = h5priv_alloc ( f, list->items, size_in_bytes ) );
list->size = size;
if ( new ) list->num_items = 0;
return H5_SUCCESS;
}
h5_err_t
_h5_free_idlist_items (
h5priv_free_idlist_items (
h5_file_t * const f,
h5_idlist_t *list
) {
@@ -33,33 +33,33 @@ _h5_free_idlist_items (
}
h5_err_t
_h5_alloc_idlist (
h5priv_alloc_idlist (
h5_file_t * const f,
h5_idlist_t **list,
const h5_size_t size
) {
TRY ( ( *list = _h5_alloc ( f, NULL, sizeof (**list) ) ) );
TRY ( ( *list = h5priv_alloc ( f, NULL, sizeof (**list) ) ) );
memset ( *list, 0, sizeof(**list) );
size_t size_in_bytes = size * sizeof ( (*list)->items[0] );
TRY ( (*list)->items = _h5_alloc ( f, (*list)->items, size_in_bytes ) );
TRY ( (*list)->items = h5priv_alloc ( f, (*list)->items, size_in_bytes ) );
(*list)->size = size;
return H5_SUCCESS;
}
h5_err_t
_h5_free_idlist (
h5priv_free_idlist (
h5_file_t * const f,
h5_idlist_t **list
) {
if ( *list == NULL ) return H5_SUCCESS;
TRY ( _h5_free_idlist_items ( f, *list ) );
TRY ( _h5_free( f, *list ) );
TRY ( h5priv_free_idlist_items ( f, *list ) );
TRY ( h5priv_free( f, *list ) );
*list = NULL;
return H5_SUCCESS;
}
h5_err_t
_h5_append_to_idlist (
h5priv_append_to_idlist (
h5_file_t * const f,
h5_idlist_t *list,
h5_id_t id
@@ -71,19 +71,19 @@ _h5_append_to_idlist (
} else {
size *= 2;
}
TRY ( _h5_alloc_idlist_items ( f, list, size ) );
TRY ( h5priv_alloc_idlist_items ( f, list, size ) );
}
list->items[list->num_items++] = id;
return H5_SUCCESS;
}
int
_h5_cmp_ids_by_eid (
h5priv_cmp_ids_by_eid (
const void *_id1,
const void *_id2
) {
h5_id_t id1 = _h5t_get_elem_idx ( *(h5_id_t*)_id1 );
h5_id_t id2 = _h5t_get_elem_idx ( *(h5_id_t*)_id2 );
h5_id_t id1 = h5tpriv_get_elem_idx ( *(h5_id_t*)_id1 );
h5_id_t id2 = h5tpriv_get_elem_idx ( *(h5_id_t*)_id2 );
if ( id1 < id2 ) return -1;
if ( id1 > id2 ) return 1;
@@ -91,7 +91,7 @@ _h5_cmp_ids_by_eid (
}
int
_h5_cmp_ids (
h5priv_cmp_ids (
const void *_id1,
const void *_id2
) {
@@ -104,7 +104,7 @@ _h5_cmp_ids (
}
h5_err_t
_h5_sort_idlist_by_eid (
h5priv_sort_idlist_by_eid (
h5_file_t * const f,
h5_idlist_t *list
) {
@@ -112,7 +112,7 @@ _h5_sort_idlist_by_eid (
list->items,
list->num_items,
sizeof(list->items[0]),
_h5_cmp_ids_by_eid );
h5priv_cmp_ids_by_eid );
return H5_SUCCESS;
}
@@ -121,7 +121,7 @@ _h5_sort_idlist_by_eid (
Find ID in sorted list
*/
h5_id_t
_h5_find_idlist (
h5priv_find_idlist (
h5_file_t * const f,
h5_idlist_t *list,
h5_id_t item
@@ -145,7 +145,7 @@ _h5_find_idlist (
Add item to list at position given by \c idx.
*/
h5_id_t
_h5_insert_idlist (
h5priv_insert_idlist (
h5_file_t * const f,
h5_idlist_t *list,
h5_id_t item,
@@ -158,7 +158,7 @@ _h5_insert_idlist (
} else {
size *= 2;
}
TRY ( _h5_alloc_idlist_items ( f, list, size ) );
TRY ( h5priv_alloc_idlist_items ( f, list, size ) );
}
memmove (
&list->items[idx+1],
@@ -173,35 +173,35 @@ _h5_insert_idlist (
Search in sorted list. If item is not in list, add it.
*/
h5_id_t
_h5_search_idlist (
h5priv_search_idlist (
h5_file_t * const f,
h5_idlist_t *list,
h5_id_t item
) {
h5_id_t idx = _h5_find_idlist ( f, list, item );
h5_id_t idx = h5priv_find_idlist ( f, list, item );
if ( idx < 0 ) {
idx = -(idx+1);
idx = _h5_insert_idlist ( f, list, item, idx );
idx = h5priv_insert_idlist ( f, list, item, idx );
}
return idx;
}
h5_err_t
_h5_alloc_idmap (
h5priv_alloc_idmap (
h5_file_t * const f,
h5_idmap_t *map,
const h5_size_t size
) {
int new = ( map->items == NULL );
size_t size_in_bytes = size * sizeof ( map->items[0] );
TRY ( map->items = _h5_alloc ( f, map->items, size_in_bytes ) );
TRY ( map->items = h5priv_alloc ( f, map->items, size_in_bytes ) );
map->size = size;
if ( new ) map->num_items = 0;
return H5_SUCCESS;
}
h5_err_t
_h5_insert_idmap (
h5priv_insert_idmap (
h5_file_t * const f,
h5_idmap_t *map,
h5_id_t global_id,
@@ -211,7 +211,7 @@ _h5_insert_idmap (
if ( map->num_items == map->size )
return HANDLE_H5_OVERFLOW_ERR( f, "g2lmap", map->size );
h5_id_t i = _h5_search_idmap ( map, global_id );
h5_id_t i = h5priv_search_idmap ( map, global_id );
if ( i >= 0 ) /* global id already in use ? */
return -1;
@@ -239,7 +239,7 @@ _h5_insert_idmap (
*/
h5_id_t
_h5_search_idmap (
h5priv_search_idmap (
h5_idmap_t *map,
h5_id_t value
) {
@@ -274,7 +274,7 @@ _cmp_idmap_items (
}
h5_err_t
_h5_sort_idmap (
h5priv_sort_idmap (
h5_idmap_t *map
) {
qsort (
+15 -15
View File
@@ -2,65 +2,65 @@
#define __H5_MAPS_H
h5_err_t
_h5_alloc_idlist (
h5priv_alloc_idlist (
h5_file_t * const f,
h5_idlist_t **list,
const h5_size_t size
);
h5_err_t
_h5_free_idlist (
h5priv_free_idlist (
h5_file_t * const f,
h5_idlist_t **list
);
h5_err_t
_h5_alloc_idlist_items (
h5priv_alloc_idlist_items (
h5_file_t * const f,
h5_idlist_t *list,
const h5_size_t size
);
h5_err_t
_h5_free_idlist_items (
h5priv_free_idlist_items (
h5_file_t * const f,
h5_idlist_t *list
);
h5_err_t
_h5_append_to_idlist (
h5priv_append_to_idlist (
h5_file_t * const f,
h5_idlist_t *list,
h5_id_t id
);
int
_h5_cmp_ids_by_eid (
h5priv_cmp_ids_by_eid (
const void *_id1,
const void *_id2
);
int
_h5_cmp_ids (
h5priv_cmp_ids (
const void *_id1,
const void *_id2
);
h5_err_t
_h5_sort_idlist_by_eid (
h5priv_sort_idlist_by_eid (
h5_file_t * const f,
h5_idlist_t *list
);
h5_id_t
_h5_find_idlist (
h5priv_find_idlist (
h5_file_t * const f,
h5_idlist_t *list,
h5_id_t item
);
h5_id_t
_h5_insert_idlist (
h5priv_insert_idlist (
h5_file_t * const f,
h5_idlist_t *list,
h5_id_t item,
@@ -68,21 +68,21 @@ _h5_insert_idlist (
);
h5_id_t
_h5_search_idlist (
h5priv_search_idlist (
h5_file_t * const f,
h5_idlist_t *list,
h5_id_t item
);
h5_err_t
_h5_alloc_idmap (
h5priv_alloc_idmap (
h5_file_t * const f,
h5_idmap_t *map,
const h5_size_t size
);
h5_err_t
_h5_insert_idmap (
h5priv_insert_idmap (
h5_file_t * const f,
h5_idmap_t *map,
h5_id_t global_id,
@@ -90,13 +90,13 @@ _h5_insert_idmap (
);
h5_id_t
_h5_search_idmap (
h5priv_search_idmap (
h5_idmap_t *map,
h5_id_t value
);
h5_err_t
_h5_sort_idmap (
h5priv_sort_idmap (
h5_idmap_t *map
);
+3 -3
View File
@@ -5,7 +5,7 @@
#ifdef PARALLEL_IO
h5_err_t
_h5_mpi_allgather (
h5priv_mpi_allgather (
h5_file_t * const f,
void * sendbuf,
const int sendcount,
@@ -32,7 +32,7 @@ _h5_mpi_allgather (
}
h5_err_t
_h5_mpi_comm_size (
h5priv_mpi_comm_size (
h5_file_t * const f,
MPI_Comm comm,
int *size
@@ -49,7 +49,7 @@ _h5_mpi_comm_size (
h5_err_t
_h5_mpi_comm_rank (
h5priv_mpi_comm_rank (
h5_file_t * const f,
MPI_Comm comm,
int *rank
+3 -3
View File
@@ -3,7 +3,7 @@
#ifdef PARALLEL_IO
h5_err_t
_h5_mpi_allgather (
h5priv_mpi_allgather (
h5_file_t * const f,
void * sendbuf,
const int sendcount,
@@ -15,14 +15,14 @@ _h5_mpi_allgather (
);
h5_err_t
_h5_mpi_comm_size (
h5priv_mpi_comm_size (
h5_file_t * const f,
MPI_Comm comm,
int *size
);
h5_err_t
_h5_mpi_comm_rank (
h5priv_mpi_comm_rank (
h5_file_t * const f,
MPI_Comm comm,
int *rank
+40 -40
View File
@@ -40,7 +40,7 @@ h5_check_filehandle (
Initialize H5Part
*/
static herr_t
_h5_error_handler (
h5priv_error_handler (
hid_t estack_id,
void* __f
) {
@@ -60,10 +60,10 @@ _h5_error_handler (
\return H5_SUCCESS or error code
*/
static h5_int64_t
_h5u_open_file (
h5upriv_open_file (
h5_file_t *f /*!< IN: file handle */
) {
TRY ( f->u = (h5u_fdata_t*) _h5_alloc( f, NULL, sizeof (*f->u) ) );
TRY ( f->u = (h5u_fdata_t*) h5priv_alloc( f, NULL, sizeof (*f->u) ) );
h5u_fdata_t *u = f->u;
u->shape = 0;
@@ -72,7 +72,7 @@ _h5u_open_file (
u->viewstart = -1;
u->viewend = -1;
size_t size = f->nprocs * sizeof (h5_int64_t);
TRY ( u->pnparticles = _h5_alloc ( f, NULL, size ) );
TRY ( u->pnparticles = h5priv_alloc ( f, NULL, size ) );
return H5_SUCCESS;
}
@@ -87,22 +87,22 @@ _h5u_open_file (
\return H5_SUCCESS or error code
*/
static h5_int64_t
_h5b_open_file (
h5bpriv_open_block (
h5_file_t *f /*!< IN: file handle */
) {
h5b_fdata_t *b;
if ( f->b ) return H5_SUCCESS;
TRY ( f->b = (h5b_fdata_t*) _h5_alloc ( f, NULL, sizeof (*f->b) ) );
TRY ( f->b = (h5b_fdata_t*) h5priv_alloc ( f, NULL, sizeof (*f->b) ) );
b = f->b;
memset ( b, 0, sizeof (*b) );
size_t size = f->nprocs * sizeof (b->user_layout[0]);
TRY ( b->user_layout = _h5_alloc ( f, NULL, size ) );
TRY ( b->user_layout = h5priv_alloc ( f, NULL, size ) );
size = f->nprocs * sizeof (b->write_layout[0]);
TRY ( b->write_layout = _h5_alloc ( f, NULL, size ) );
TRY ( b->write_layout = h5priv_alloc ( f, NULL, size ) );
b->step_idx = -1;
b->blockgroup = -1;
@@ -126,7 +126,7 @@ _h5b_open_file (
*/
h5_err_t
_h5_open_file (
h5priv_open_file (
h5_file_t * const f,
const char *filename, /*!< The name of the data file to open. */
h5_int32_t flags, /*!< The access mode for the file. */
@@ -134,7 +134,7 @@ _h5_open_file (
) {
h5_info ( f, "Opening file %s.", filename );
TRY ( _hdf_set_errorhandler ( f, H5E_DEFAULT, _h5_error_handler, NULL ) );
TRY ( h5priv_set_hdf5_errorhandler ( f, H5E_DEFAULT, h5priv_error_handler, NULL ) );
TRY ( h5_set_stepname_fmt ( f, H5PART_GROUPNAME_STEP, 0 ) );
f->xfer_prop = f->create_prop = f->access_prop = H5P_DEFAULT;
@@ -145,8 +145,8 @@ _h5_open_file (
#ifdef PARALLEL_IO
f->comm = comm;
TRY ( _h5_mpi_comm_size ( f, comm, &f->nprocs ) );
TRY ( _h5_mpi_comm_rank ( f, comm, &f->myproc ) );
TRY ( h5priv_mpi_comm_size ( f, comm, &f->nprocs ) );
TRY ( h5priv_mpi_comm_rank ( f, comm, &f->myproc ) );
/* for the SP2... perhaps different for linux */
MPI_Info info = MPI_INFO_NULL;
@@ -154,17 +154,17 @@ _h5_open_file (
/* ks: IBM_large_block_io */
MPI_Info_create(&info);
MPI_Info_set(info, "IBM_largeblock_io", "true" );
TRY ( _hdf_set_fapl_mpio_property ( f, f->access_prop, comm, info ) );
TRY ( h5priv_set_hdf5_fapl_mpio_property ( f, f->access_prop, comm, info ) );
MPI_Info_free(&info);
TRY ( f->access_prop = _hdf_create_property ( f, H5P_FILE_ACCESS ) );
TRY ( f->access_prop = h5priv_create_hdf5_property ( f, H5P_FILE_ACCESS ) );
/*TRY ( f->create_prop = _hdf_create_property ( f, H5P_FILE_CREATE) );*/
/*TRY ( f->create_prop = h5priv_create_hdf5_property ( f, H5P_FILE_CREATE) );*/
f->create_prop = H5P_DEFAULT;
/* xfer_prop: also used for parallel I/O, during actual writes
rather than the access_prop which is for file creation. */
TRY ( f->xfer_prop = _hdf_create_property ( f, H5P_DATASET_XFER ) );
TRY ( f->xfer_prop = h5priv_create_hdf5_property ( f, H5P_DATASET_XFER ) );
#ifdef COLLECTIVE_IO
if (H5Pset_dxpl_mpio (f->xfer_prop,H5FD_MPIO_COLLECTIVE) < 0) {
@@ -208,7 +208,7 @@ _h5_open_file (
H5_ERR_HDF5,
"Cannot open file \"%s\" with mode \"%d\"",
filename, flags );
TRY ( f->root_gid = _h5_open_group ( f, f->file, "/" ) );
TRY ( f->root_gid = h5priv_open_group ( f, f->file, "/" ) );
f->mode = flags;
f->step_gid = -1;
@@ -217,9 +217,9 @@ _h5_open_file (
"%s#%0*lld",
f->prefix_step_name, f->width_step_idx, (long long) f->step_idx );
TRY ( _h5u_open_file ( f ) );
TRY ( _h5b_open_file ( f ) );
TRY ( _h5t_open_file ( f ) );
TRY ( h5upriv_open_file ( f ) );
TRY ( h5bpriv_open_block ( f ) );
TRY ( h5tpriv_open_file ( f ) );
return H5_SUCCESS;
}
@@ -245,7 +245,7 @@ h5_open_file (
}
memset (f, 0, sizeof (h5_file_t));
f->__funcname = funcname;
if ( _h5_open_file( f, filename, flags, comm ) < 0 ) {
if ( h5priv_open_file( f, filename, flags, comm ) < 0 ) {
if (f != NULL ) {
/* Oops, cannot open file. We release the memory allocated for
f only, there is most likely more allocated memory we do
@@ -270,22 +270,22 @@ h5_open_file (
\return H5_SUCCESS or error code
*/
static h5_int64_t
_h5u_close_file (
h5upriv_close_file (
h5_file_t *f /*!< file handle */
) {
struct h5u_fdata *u = f->u;
f->__errno = H5_SUCCESS;
if( u->shape > 0 ) {
TRY( _hdf_close_dataspace( f, u->shape ) );
TRY( h5priv_close_hdf5_dataspace( f, u->shape ) );
u->shape = 0;
}
if( u->diskshape != H5S_ALL ) {
TRY( _hdf_close_dataspace( f, u->diskshape ) );
TRY( h5priv_close_hdf5_dataspace( f, u->diskshape ) );
u->diskshape = 0;
}
if( u->memshape != H5S_ALL ) {
TRY( _hdf_close_dataspace( f, u->memshape ) );
TRY( h5priv_close_hdf5_dataspace( f, u->memshape ) );
u->memshape = 0;
}
if( u->pnparticles ) {
@@ -305,15 +305,15 @@ _h5u_close_file (
\return H5_SUCCESS or error code
*/
static h5_int64_t
_h5b_close_file (
h5bpriv_close_block (
h5_file_t *f /*!< IN: file handle */
) {
struct h5b_fdata *b = f->b;
TRY ( _hdf_close_group( f, b->blockgroup ) );
TRY ( _hdf_close_dataspace( f, b->shape ) );
TRY ( _hdf_close_dataspace( f, b->diskshape ) );
TRY ( _hdf_close_dataspace( f, b->memshape ) );
TRY ( h5priv_close_hdf5_group( f, b->blockgroup ) );
TRY ( h5priv_close_hdf5_dataspace( f, b->shape ) );
TRY ( h5priv_close_hdf5_dataspace( f, b->diskshape ) );
TRY ( h5priv_close_hdf5_dataspace( f, b->memshape ) );
free ( f->b );
f->b = NULL;
@@ -337,16 +337,16 @@ h5_close_file (
CHECK_FILEHANDLE ( f );
TRY( _h5_close_step ( f ) );
TRY( _h5u_close_file ( f ) );
TRY( _h5b_close_file ( f ) );
TRY( _h5t_close_file ( f ) );
TRY( _hdf_close_group( f, f->step_gid ) );
TRY( _hdf_close_property ( f, f->xfer_prop ) );
TRY( _hdf_close_property ( f, f->access_prop ) );
TRY( _hdf_close_property ( f, f->create_prop ) );
TRY( _hdf_close_group ( f, f->root_gid ) );
TRY( _hdf_close_file ( f, f->file ) );
TRY( h5priv_close_step ( f ) );
TRY( h5upriv_close_file ( f ) );
TRY( h5bpriv_close_block ( f ) );
TRY( h5tpriv_close_file ( f ) );
TRY( h5priv_close_hdf5_group( f, f->step_gid ) );
TRY( h5priv_close_hdf5_property ( f, f->xfer_prop ) );
TRY( h5priv_close_hdf5_property ( f, f->access_prop ) );
TRY( h5priv_close_hdf5_property ( f, f->create_prop ) );
TRY( h5priv_close_hdf5_group ( f, f->root_gid ) );
TRY( h5priv_close_hdf5_file ( f, f->file ) );
free( f );
+1 -1
View File
@@ -35,7 +35,7 @@ h5_get_stepname_fmt (
);
h5_err_t
_h5_close_step (
h5priv_close_step (
h5_file_t * const f
);
+4 -4
View File
@@ -106,11 +106,11 @@ __unused
#ifdef I_AM_QSORT_R
void
_h5_qsort_r(void *a, size_t n, size_t es, void *thunk, cmp_t *cmp)
h5priv_qsort_r(void *a, size_t n, size_t es, void *thunk, cmp_t *cmp)
#else
#define thunk NULL
void
_h5_qsort(void *a, size_t n, size_t es, cmp_t *cmp)
h5priv_qsort(void *a, size_t n, size_t es, cmp_t *cmp)
#endif
{
char *pa, *pb, *pc, *pd, *pl, *pm, *pn;
@@ -182,9 +182,9 @@ loop: SWAPINIT(a, es);
vecswap(pb, pn - r, r);
if ((r = pb - pa) > es)
#ifdef I_AM_QSORT_R
_h5_qsort_r(a, r / es, es, thunk, cmp);
h5priv_qsort_r(a, r / es, es, thunk, cmp);
#else
_h5_qsort(a, r / es, es, cmp);
h5priv_qsort(a, r / es, es, cmp);
#endif
if ((r = pd - pc) > es) {
/* Iterate rather than recurse to save stack space */
+2 -2
View File
@@ -2,7 +2,7 @@
#define __H5_QSORT_PRIVATE_H
void
_h5_qsort_r (
h5priv_qsort_r (
void *a,
size_t n,
size_t es,
@@ -11,7 +11,7 @@ _h5_qsort_r (
);
void
_h5_qsort (
h5priv_qsort (
void *a,
size_t n,
size_t es,
+32 -32
View File
@@ -26,14 +26,14 @@ h5_write_data (
hid_t dset_id;
h5_info ( f, "Writing dataset %s/%s.", h5_get_objname(group_id), name );
TRY ( dset_id = _hdf_create_dataset (
TRY ( dset_id = h5priv_create_hdf5_dataset (
f,
group_id,
name,
type_id,
diskspace_id,
H5P_DEFAULT ) );
TRY ( _hdf_write_dataset (
TRY ( h5priv_write_hdf5_dataset (
f,
dset_id,
type_id,
@@ -41,7 +41,7 @@ h5_write_data (
diskspace_id,
f->xfer_prop,
array ) );
TRY ( _hdf_close_dataset( f, dset_id ) );
TRY ( h5priv_close_hdf5_dataset( f, dset_id ) );
f->empty = 0;
@@ -57,7 +57,7 @@ h5_write_data (
- Close dataset
*/
h5_err_t
_h5_write_dataset_by_name (
h5priv_write_dataset_by_name (
h5_file_t * const f,
const hid_t loc_id,
h5_dsinfo_t *dsinfo,
@@ -79,7 +79,7 @@ _h5_write_dataset_by_name (
h5_warn ( f,
"Dataset %s/%s already exist.",
h5_get_objname ( loc_id ), dsinfo->name );
return _h5_handle_file_mode_error( f, f->mode );
return h5priv_handle_file_mode_error( f, f->mode );
}
/*
@@ -92,26 +92,26 @@ _h5_write_dataset_by_name (
if ( herr >= 0 ) {
/* overwrite dataset */
TRY ( (dset_id = _hdf_open_dataset (
TRY ( (dset_id = h5priv_open_hdf5_dataset (
f,
loc_id,
dsinfo->name ) ) );
TRY ( (dataspace_id = _hdf_get_dataset_space (
TRY ( (dataspace_id = h5priv_get_hdf5_dataset_space (
f,
dset_id ) ) );
TRY ( _hdf_set_dataset_extent (
TRY ( h5priv_set_hdf5_dataset_extent (
f,
dset_id,
dsinfo->dims ) );
/* exten dataset? */
} else {
/* create dataset */
TRY ( dataspace_id = _hdf_create_dataspace (
TRY ( dataspace_id = h5priv_create_hdf5_dataspace (
f,
dsinfo->rank,
dsinfo->dims,
dsinfo->max_dims ) );
TRY ( dset_id = _hdf_create_dataset (
TRY ( dset_id = h5priv_create_hdf5_dataset (
f,
loc_id,
dsinfo->name,
@@ -121,7 +121,7 @@ _h5_write_dataset_by_name (
}
TRY ( memspace_id = (*set_memspace)( f, 0 ) );
TRY ( diskspace_id = (*set_diskspace)( f, dataspace_id ) );
TRY ( _hdf_write_dataset (
TRY ( h5priv_write_hdf5_dataset (
f,
dset_id,
dsinfo->type_id,
@@ -129,9 +129,9 @@ _h5_write_dataset_by_name (
diskspace_id,
f->xfer_prop,
data ) );
TRY ( _hdf_close_dataspace ( f, diskspace_id ) );
TRY ( _hdf_close_dataspace ( f, memspace_id ) );
TRY ( _hdf_close_dataset( f, dset_id ) );
TRY ( h5priv_close_hdf5_dataspace ( f, diskspace_id ) );
TRY ( h5priv_close_hdf5_dataspace ( f, memspace_id ) );
TRY ( h5priv_close_hdf5_dataset( f, dset_id ) );
f->empty = 0;
@@ -139,7 +139,7 @@ _h5_write_dataset_by_name (
}
h5_err_t
_h5_read_dataset (
h5priv_read_dataset (
h5_file_t * const f,
hid_t dset_id,
h5_dsinfo_t *dsinfo,
@@ -153,7 +153,7 @@ _h5_read_dataset (
TRY ( (mspace_id = (*set_mspace)( f, dset_id ) ) );
TRY ( (dspace_id = (*set_dspace)( f, dset_id ) ) );
TRY ( _hdf_read_dataset (
TRY ( h5priv_read_hdf5_dataset (
f,
dset_id,
dsinfo->type_id,
@@ -161,14 +161,14 @@ _h5_read_dataset (
dspace_id,
f->xfer_prop,
data ) );
TRY ( _hdf_close_dataspace ( f, dspace_id ) );
TRY ( _hdf_close_dataspace ( f, mspace_id ) );
TRY ( h5priv_close_hdf5_dataspace ( f, dspace_id ) );
TRY ( h5priv_close_hdf5_dataspace ( f, mspace_id ) );
return H5_SUCCESS;
}
h5_err_t
_h5_read_dataset_by_name (
h5priv_read_dataset_by_name (
h5_file_t * const f,
hid_t loc_id,
h5_dsinfo_t *dsinfo,
@@ -178,13 +178,13 @@ _h5_read_dataset_by_name (
) {
hid_t dset_id;
TRY ( (dset_id = _hdf_open_dataset (
TRY ( (dset_id = h5priv_open_hdf5_dataset (
f,
loc_id,
dsinfo->name ) ) );
TRY ( _h5_read_dataset ( f, dset_id, dsinfo, set_mspace, set_dspace,
TRY ( h5priv_read_dataset ( f, dset_id, dsinfo, set_mspace, set_dspace,
data ) );
TRY ( _hdf_close_dataset ( f, dset_id ) );
TRY ( h5priv_close_hdf5_dataset ( f, dset_id ) );
return H5_SUCCESS;
}
@@ -194,19 +194,19 @@ static h5_err_t
_init_step (
h5_file_t * f
) {
TRY ( _h5t_init_step ( f ) );
TRY ( h5tpriv_init_step ( f ) );
return H5_SUCCESS;
}
h5_err_t
_h5_close_step (
h5priv_close_step (
h5_file_t * f
) {
if ( f->step_gid < 0 ) return H5_SUCCESS;
TRY ( _h5t_close_step ( f ) );
TRY ( _hdf_close_group ( f, f->step_gid ) );
TRY ( h5tpriv_close_step ( f ) );
TRY ( h5priv_close_hdf5_group ( f, f->step_gid ) );
f->step_gid = -1;
@@ -230,7 +230,7 @@ _set_step (
f->myproc,
(long long)f->step_idx,
(long long)(size_t) f );
TRY ( f->step_gid = _h5_open_group ( f, f->file, f->step_name ) );
TRY ( f->step_gid = h5priv_open_group ( f, f->file, f->step_name ) );
return H5_SUCCESS;
}
@@ -241,7 +241,7 @@ h5_set_step (
const h5_int64_t step_idx /*!< [in] Step to set. */
) {
TRY ( _h5_close_step ( f ) );
TRY ( h5priv_close_step ( f ) );
TRY ( _set_step ( f, step_idx ) );
TRY ( _init_step ( f ) );
@@ -288,11 +288,11 @@ h5_get_dataset_type(
hid_t dset_id;
hid_t hdf5_type;
TRY( dset_id = _hdf_open_dataset ( f, group_id, dset_name ) );
TRY ( hdf5_type = _hdf_get_dataset_type ( f, dset_id ) );
TRY( dset_id = h5priv_open_hdf5_dataset ( f, group_id, dset_name ) );
TRY ( hdf5_type = h5priv_get_hdf5_dataset_type ( f, dset_id ) );
h5_int64_t type = (h5_int64_t) h5_normalize_h5_type ( f, hdf5_type );
TRY( _hdf_close_type( f, hdf5_type ) );
TRY( _hdf_close_dataset( f, dset_id ) );
TRY( h5priv_close_hdf5_type( f, hdf5_type ) );
TRY( h5priv_close_hdf5_dataset( f, dset_id ) );
return type;
}
+3 -3
View File
@@ -16,7 +16,7 @@ typedef struct h5_dataset_info {
} h5_dsinfo_t;
h5_err_t
_h5_write_dataset_by_name (
h5priv_write_dataset_by_name (
h5_file_t * const f,
hid_t loc_id,
h5_dsinfo_t *ds_info,
@@ -26,7 +26,7 @@ _h5_write_dataset_by_name (
);
h5_err_t
_h5_read_dataset (
h5priv_read_dataset (
h5_file_t * const f,
hid_t dset_id,
h5_dsinfo_t *ds_info,
@@ -36,7 +36,7 @@ _h5_read_dataset (
);
h5_err_t
_h5_read_dataset_by_name (
h5priv_read_dataset_by_name (
h5_file_t * const f,
hid_t loc_id,
h5_dsinfo_t *ds_info,
+5 -5
View File
@@ -5,7 +5,7 @@
#include "h5_core_private.h"
void *
_h5_alloc (
h5priv_alloc (
h5_file_t * const f,
void *ptr,
const size_t size
@@ -23,7 +23,7 @@ _h5_alloc (
}
void *
_h5_calloc (
h5priv_calloc (
h5_file_t * const f,
const size_t count,
const size_t size
@@ -41,7 +41,7 @@ _h5_calloc (
}
h5_err_t
_h5_free (
h5priv_free (
h5_file_t * const f,
void *ptr
) {
@@ -50,7 +50,7 @@ _h5_free (
}
void *
_h5_tsearch (
h5priv_tsearch (
h5_file_t * const f,
const void *key,
void **rootp,
@@ -68,7 +68,7 @@ _h5_tsearch (
}
void *
_h5_tfind (
h5priv_tfind (
h5_file_t * const f,
const void *key,
void *const *rootp,
+5 -5
View File
@@ -2,27 +2,27 @@
#define __H5_SYSCALL_H
void *
_h5_alloc (
h5priv_alloc (
h5_file_t * const f,
void *ptr,
const size_t size
);
void *
_h5_calloc (
h5priv_calloc (
h5_file_t * const f,
const size_t count,
const size_t size
);
h5_err_t
_h5_free (
h5priv_free (
h5_file_t * const f,
void *ptr
);
void *
_h5_tsearch (
h5priv_tsearch (
h5_file_t * const f,
const void *key,
void **rootp,
@@ -30,7 +30,7 @@ _h5_tsearch (
);
void *
_h5_tfind (
h5priv_tfind (
h5_file_t * const f,
const void *key,
void *const *rootp,
+39 -553
View File
@@ -1,5 +1,5 @@
/*
Copyright 2006-2009
Copyright 2006-2010
Paul Scherrer Institut, Villigen, Switzerland;
Achim Gsell
All rights reserved.
@@ -19,632 +19,124 @@
#include "h5_core/h5_core.h"
#include "h5_core/h5_core_private.h"
/*
compute T(V) from current level up to highest levels.
*/
static h5_err_t
_compute_tets_of_vertices (
h5_file_t * const f
) {
h5t_fdata_t *t = f->t;
h5_id_t eid = (t->cur_level <= 0 ) ? 0 : t->num_elems[t->cur_level-1];
h5_elem_ldta_t *tet = tet = &t->elems_ldta[eid];
h5_id_t num_elems = t->num_elems[t->num_levels-1];
for ( ;eid < num_elems; eid++, tet++ ) {
int i;
for ( i = 0; i < 4; i++ ) {
h5_id_t vid = tet->local_vids[i];
TRY ( _h5_append_to_idlist (
f,
&t->vertices_data[vid].tv,
_h5t_build_vertex_id( i, eid ) ) );
}
}
return H5_SUCCESS;
}
/*
Compute T(E) from current level up to highest levels.
*/
static h5_err_t
_compute_tets_of_edges (
h5_file_t * const f
) {
h5t_fdata_t *t = f->t;
h5_id_t eid = (t->cur_level <= 0 ) ? 0 : t->num_elems[t->cur_level-1];
h5_elem_ldta_t *tet = tet = &t->elems_ldta[eid];
h5_id_t num_elems = t->num_elems[t->num_levels-1];
h5t_te_entry_t *retval = NULL;
TRY ( _h5t_resize_te_htab ( f, 4*(num_elems-eid) ) );
for ( ; eid < num_elems; eid++, tet++ ) {
h5_id_t face;
for ( face = 0; face < 6; face++ ) {
TRY ( _h5t_search_te2 ( f, face, eid, &retval ) );
}
}
return H5_SUCCESS;
}
static h5_err_t
_compute_tets_of_triangles (
h5_file_t * const f
) {
h5t_fdata_t *t = f->t;
h5_id_t eid = (t->cur_level <= 0 ) ? 0 : t->num_elems[t->cur_level-1];
h5_elem_ldta_t *tet = tet = &t->elems_ldta[eid];
h5_id_t num_elems = t->num_elems[t->num_levels-1];
h5t_td_entry_t *retval = NULL;
TRY ( _h5t_resize_td_htab ( f, 4*(num_elems-eid) ) );
for ( ; eid < num_elems; eid++, tet++ ) {
h5_id_t face;
for ( face = 0; face < 4; face++ ) {
TRY ( _h5t_search_td2 ( f, face, eid, &retval ) );
}
}
return H5_SUCCESS;
}
h5_err_t
_h5t_rebuild_adj_data (
h5_file_t * const f
) {
clock_t t1 = clock();
TRY ( _compute_tets_of_vertices ( f ) );
clock_t t2 = clock();
fprintf ( stderr, "_compute_tets_of_vertices(): %f\n",
(float)(t2-t1)/CLOCKS_PER_SEC );
t1 = clock();
TRY ( _compute_tets_of_edges ( f ) );
t2 = clock();
fprintf ( stderr, "_compute_tets_of_edge(): %f\n",
(float)(t2-t1)/CLOCKS_PER_SEC );
t1 = clock();
TRY ( _compute_tets_of_triangles ( f ) );
t2 = clock();
fprintf ( stderr, "_compute_tets_of_triangle(): %f\n",
(float)(t2-t1)/CLOCKS_PER_SEC );
return H5_SUCCESS;
}
static h5_err_t
_compute_children_of_edge (
h5_file_t * const f,
h5_id_t kid,
h5_idlist_t *children
) {
h5t_fdata_t *t = f->t;
h5t_te_entry_t *te;
TRY ( _h5t_find_te2 (
f,
_h5t_get_face_id ( kid ),
_h5t_get_elem_idx ( kid ),
&te )
);
h5_id_t *edge = te->value.items;
h5_id_t *end = te->value.items+te->value.num_items;
for ( ; edge < end; edge++ ) {
h5_id_t eid = _h5t_get_elem_idx ( *edge );
h5_id_t face_id = _h5t_get_face_id ( *edge );
h5_elem_ldta_t *tet = &t->elems_ldta[eid];
if ( _h5t_elem_is_on_cur_level ( f, tet ) == H5_OK ) {
TRY ( _h5_append_to_idlist (
f, children, *edge )
);
} else {
h5_id_t kids[2];
TRY ( _h5t_compute_direct_children_of_edge (
f,
face_id,
tet->local_child_eid,
kids ) );
TRY ( _compute_children_of_edge (
f, kids[0], children ) );
TRY ( _compute_children_of_edge (
f, kids[1], children ) );
}
}
return H5_SUCCESS;
}
/*
Compute all sections of an edge.
*/
static h5_err_t
_compute_sections_of_edge (
h5_file_t * const f,
h5_id_t kid,
h5_idlist_t *children
) {
h5t_fdata_t *t = f->t;
h5t_te_entry_t *te;
TRY ( _h5t_find_te2 (
f,
_h5t_get_face_id ( kid ),
_h5t_get_elem_idx ( kid ),
&te )
);
h5_id_t *edge = te->value.items;
h5_id_t *end = te->value.items+te->value.num_items;
int refined = 0;
for ( ; edge < end; edge++ ) {
h5_id_t eid = _h5t_get_elem_idx ( *edge );
h5_id_t face_id = _h5t_get_face_id ( *edge );
h5_elem_ldta_t *tet = &t->elems_ldta[eid];
if ( ! _h5t_elem_is_on_cur_level ( f, tet ) == H5_OK ) {
refined = 1;
h5_id_t kids[2];
TRY ( _h5t_compute_direct_children_of_edge (
f,
face_id,
tet->local_child_eid,
kids ) );
TRY ( _compute_sections_of_edge (
f, kids[0], children ) );
TRY ( _compute_sections_of_edge (
f, kids[1], children ) );
}
}
if ( ! refined ) {
TRY ( _h5_append_to_idlist ( f, children, te->value.items[0] ) );
}
return H5_SUCCESS;
}
h5_err_t
_compute_direct_children_of_triangle (
h5_file_t * const f,
h5_id_t face_id,
h5_id_t eid,
h5_id_t dids[4]
) {
int off[4][4] = { {1,2,3,7}, {0,2,3,6}, {0,1,3,4}, {0,1,2,5} };
if ( ( face_id < 0 ) || ( face_id >= 4 ) ) {
return h5_error_internal ( f, __FILE__, __func__, __LINE__ );
}
dids[0] = _h5t_build_edge_id ( face_id, eid+off[face_id][0] );
dids[1] = _h5t_build_edge_id ( face_id, eid+off[face_id][1] );
dids[2] = _h5t_build_edge_id ( face_id, eid+off[face_id][2] );
dids[3] = _h5t_build_edge_id ( face_id, eid+off[face_id][3] );
return H5_SUCCESS;
}
h5_err_t
_compute_children_of_triangle (
h5_file_t * const f,
h5_id_t did,
h5_idlist_t *children
) {
h5t_fdata_t *t = f->t;
h5t_td_entry_t *td;
TRY ( _h5t_find_td2 (
f,
_h5t_get_face_id ( did ),
_h5t_get_elem_idx ( did ),
&td
) );
h5_id_t *tri = td->value.items;
h5_id_t *end = td->value.items+td->value.num_items;
for ( ; tri < end; tri++ ) {
h5_id_t eid = _h5t_get_elem_idx ( *tri );
h5_id_t face_id = _h5t_get_face_id ( *tri );
h5_elem_ldta_t *tet = &t->elems_ldta[eid];
if ( _h5t_elem_is_on_cur_level ( f, tet ) == H5_OK ) {
TRY ( _h5_append_to_idlist (
f, children, *tri )
);
} else {
h5_id_t dids[4];
TRY ( _compute_direct_children_of_triangle (
f,
face_id,
tet->local_child_eid,
dids ) );
TRY ( _compute_children_of_triangle (
f, dids[0], children ) );
TRY ( _compute_children_of_triangle (
f, dids[1], children ) );
TRY ( _compute_children_of_triangle (
f, dids[2], children ) );
TRY ( _compute_children_of_triangle (
f, dids[3], children ) );
}
}
return H5_SUCCESS;
}
static h5_err_t
_compute_sections_of_triangle (
h5_file_t * const f,
h5_id_t did,
h5_idlist_t *children
) {
h5t_fdata_t *t = f->t;
h5t_td_entry_t *td;
TRY ( _h5t_find_td2 (
f,
_h5t_get_face_id ( did ),
_h5t_get_elem_idx ( did ), &td ) );
h5_id_t *tri = td->value.items;
h5_id_t *end = td->value.items+td->value.num_items;
int refined = 0;
for ( ; tri < end; tri++ ) {
h5_id_t eid = _h5t_get_elem_idx ( *tri );
h5_id_t face_id = _h5t_get_face_id ( *tri );
h5_elem_ldta_t *tet = &t->elems_ldta[eid];
if ( ! _h5t_elem_is_on_cur_level ( f, tet ) == H5_OK ) {
refined = 1;
h5_id_t dids[4];
TRY ( _compute_direct_children_of_triangle (
f,
face_id,
tet->local_child_eid,
dids ) );
TRY ( _compute_sections_of_triangle (
f, dids[0], children ) );
TRY ( _compute_sections_of_triangle (
f, dids[1], children ) );
TRY ( _compute_sections_of_triangle (
f, dids[2], children ) );
TRY ( _compute_sections_of_triangle (
f, dids[3], children ) );
}
}
if ( ! refined ) {
TRY ( _h5_append_to_idlist ( f, children, td->value.items[0] ) );
}
return H5_SUCCESS;
}
/*
map edge ID to unique ID
if unique ID not in list: add
*/
static h5_err_t
_add_edge (
h5_file_t * const f,
h5_idlist_t *list,
h5_id_t face_id,
h5_id_t eid
) {
h5t_te_entry_t *te;
TRY ( _h5t_find_te2 ( f, face_id, eid, &te ) );
TRY ( _h5_search_idlist ( f, list, te->value.items[0] ) );
return H5_SUCCESS;
}
h5_err_t
h5t_get_edges_upadjacent_to_vertex (
h5_file_t * const f,
const h5_id_t vid,
const h5_id_t local_vid,
h5_idlist_t **list
) {
TRY ( _h5_alloc_idlist ( f, list, 8 ) );
h5t_fdata_t *t = f->t;
h5_idlist_t *tv = &t->vertices_data[vid].tv;
h5_size_t i;
h5_id_t *vidp = tv->items;
for ( i = 0; i < tv->num_items; i++, vidp++ ) {
h5_id_t eid = _h5t_get_elem_idx ( *vidp );
h5_id_t face = _h5t_get_face_id ( *vidp );
h5_elem_ldta_t *tet = &t->elems_ldta[eid];
if ( _h5t_elem_is_on_cur_level ( f, tet ) == H5_NOK ) {
continue;
}
int map[4][3] = { {0,2,3}, {0,1,4}, {2,1,5}, {3,4,5} };
TRY ( _add_edge ( f, *list, map[face][0], eid ) );
TRY ( _add_edge ( f, *list, map[face][1], eid ) );
TRY ( _add_edge ( f, *list, map[face][2], eid ) );
}
return H5_SUCCESS;
}
static h5_err_t
_add_triangle (
h5_file_t * const f,
h5_idlist_t *list,
h5_id_t face,
h5_id_t eid
) {
h5t_td_entry_t *td;
TRY ( _h5t_find_td2 ( f, face, eid, &td ) );
TRY ( _h5_search_idlist ( f, list, td->value.items[0] ) );
return H5_SUCCESS;
return (*f->t->methods.adjacency->get_edges_upadjacent_to_vertex)(
f, local_vid, list);
}
h5_err_t
h5t_get_triangles_upadjacent_to_vertex (
h5_file_t * const f,
const h5_id_t vid,
const h5_id_t local_id,
h5_idlist_t **list
) {
TRY ( _h5_alloc_idlist ( f, list, 8 ) );
h5t_fdata_t *t = f->t;
h5_idlist_t *tv = &t->vertices_data[vid].tv;
h5_size_t i;
h5_id_t *vidp = tv->items;
for ( i = 0; i < tv->num_items; i++, vidp++ ) {
h5_id_t eid = _h5t_get_elem_idx ( *vidp );
h5_id_t face = _h5t_get_face_id ( *vidp );
h5_elem_ldta_t *tet = &t->elems_ldta[eid];
if ( _h5t_elem_is_on_cur_level ( f, tet ) == H5_NOK ) {
continue;
}
int map[4][3] = { {1,2,3}, {0,2,3}, {0,1,3}, {0,1,2} };
TRY ( _add_triangle ( f, *list, map[face][0], eid ) );
TRY ( _add_triangle ( f, *list, map[face][1], eid ) );
TRY ( _add_triangle ( f, *list, map[face][2], eid ) );
}
return H5_SUCCESS;
return (*f->t->methods.adjacency->get_triangles_upadjacent_to_vertex)(
f, local_id, list);
}
h5_err_t
h5t_get_tets_upadjacent_to_vertex (
h5_file_t * const f,
const h5_id_t vid,
const h5_id_t local_id,
h5_idlist_t **list
) {
TRY ( _h5_alloc_idlist ( f, list, 8 ) );
h5t_fdata_t *t = f->t;
h5_idlist_t *tv = &t->vertices_data[vid].tv;
h5_size_t i;
h5_id_t *vidp = tv->items;
for ( i = 0; i < tv->num_items; i++, vidp++ ) {
h5_id_t eid = _h5t_get_elem_idx ( *vidp );
h5_elem_ldta_t *tet = &t->elems_ldta[eid];
if ( _h5t_elem_is_on_cur_level ( f, tet ) == H5_NOK ) {
continue;
}
TRY ( _h5_search_idlist ( f, *list, eid ) );
}
return H5_SUCCESS;
return (*f->t->methods.adjacency->get_tets_upadjacent_to_vertex)(
f, local_id, list);
}
h5_err_t
h5t_get_triangles_upadjacent_to_edge (
h5_file_t * const f,
const h5_id_t kid,
const h5_id_t local_id,
h5_idlist_t **list
) {
h5_idlist_t *children;
TRY ( _h5_alloc_idlist ( f, &children, 8 ) );
TRY ( _compute_children_of_edge ( f, kid, children ) );
TRY ( _h5_alloc_idlist ( f, list, 8 ) );
h5_id_t *edge = children->items;
h5_id_t *end = children->items+children->num_items;
int map[6][2] = { {2,3}, {0,3}, {1,3}, {1,2}, {0,2}, {0,1} };
for ( ; edge < end; edge++ ) {
h5_id_t eid = _h5t_get_elem_idx ( *edge );
h5_id_t face_id = _h5t_get_face_id ( *edge );
TRY ( _add_triangle ( f, *list, map[face_id][0], eid ) );
TRY ( _add_triangle ( f, *list, map[face_id][1], eid ) );
}
TRY ( _h5_free_idlist( f, &children ) );
return H5_SUCCESS;
return (*f->t->methods.adjacency->get_triangles_upadjacent_to_edge)(
f, local_id, list);
}
h5_err_t
h5t_get_tets_upadjacent_to_edge (
h5_file_t * const f,
const h5_id_t kid,
const h5_id_t local_id,
h5_idlist_t **list
) {
h5_idlist_t *children;
TRY ( _h5_alloc_idlist ( f, &children, 8 ) );
TRY( _compute_children_of_edge ( f, kid, children ) );
TRY ( _h5_alloc_idlist ( f, list, 8 ) );
int i;
h5_id_t *kidp = children->items;
for ( i = 0; i < children->num_items; i++, kidp++ ) {
h5_id_t eid = _h5t_get_elem_idx ( *kidp );
TRY ( _h5_search_idlist ( f, *list, eid ) );
}
TRY ( _h5_free_idlist( f, &children ) );
return H5_SUCCESS;
return (*f->t->methods.adjacency->get_tets_upadjacent_to_edge)(
f, local_id, list);
}
h5_err_t
h5t_get_tets_upadjacent_to_triangle (
h5_file_t * const f,
const h5_id_t did,
const h5_id_t local_id,
h5_idlist_t **list
) {
h5_idlist_t *children;
TRY ( _h5_alloc_idlist ( f, &children, 8 ) );
TRY( _compute_children_of_triangle ( f, did, children ) );
TRY ( _h5_alloc_idlist ( f, list, 8 ) );
int i;
h5_id_t *didp = children->items;
for ( i = 0; i < children->num_items; i++ , didp++) {
h5_id_t eid = _h5t_get_elem_idx ( *didp );
TRY ( _h5_search_idlist ( f, *list, eid ) );
}
TRY ( _h5_free_idlist( f, &children ) );
return H5_SUCCESS;
return (*f->t->methods.adjacency->get_tets_upadjacent_to_triangle)(
f, local_id, list);
}
h5_err_t
h5t_get_vertices_downadjacent_to_edge (
h5_file_t * const f,
const h5_id_t kid,
const h5_id_t local_id,
h5_idlist_t **list
) {
h5_idlist_t *children;
TRY ( _h5_alloc_idlist ( f, &children, 8 ) );
TRY( _compute_sections_of_edge ( f, kid, children ) );
TRY ( _h5_alloc_idlist ( f, list, 8 ) );
int i;
h5_id_t *kidp = children->items;
for ( i = 0; i < children->num_items; i++, kidp++ ) {
h5_id_t vids[2];
TRY ( h5t_get_local_vids_of_edge ( f, *kidp, vids ) );
TRY ( _h5_search_idlist ( f, *list, vids[0] ) );
TRY ( _h5_search_idlist ( f, *list, vids[1] ) );
}
TRY ( _h5_free_idlist( f, &children ) );
return H5_SUCCESS;
return (*f->t->methods.adjacency->get_vertices_downadjacent_to_edge)(
f, local_id, list);
}
/*
Compute downward adjacent vertices of all edges of triangle.
*/
h5_err_t
h5t_get_vertices_downadjacent_to_triangle (
h5_file_t * const f,
const h5_id_t did,
const h5_id_t local_id,
h5_idlist_t **list
) {
h5_idlist_t *children;
TRY ( _h5_alloc_idlist ( f, &children, 8 ) );
int map[4][3] = { {1,4,5}, {2,3,5}, {0,3,4}, {0,1,2} };
h5_id_t face = _h5t_get_face_id ( did );
h5_id_t eid = _h5t_get_elem_idx ( did );
h5_id_t i;
for ( i = 0; i < 3; i++ ) {
TRY( _compute_sections_of_edge (
f,
_h5t_build_edge_id ( map[face][i], eid ),
children ) );
}
TRY ( _h5_alloc_idlist ( f, list, 8 ) );
h5_id_t *kid = children->items;
for ( i = 0; i < children->num_items; i++, kid++ ) {
h5_id_t vids[2];
TRY ( h5t_get_local_vids_of_edge ( f, *kid, vids ) );
TRY ( _h5_search_idlist ( f, *list, vids[0] ) );
TRY ( _h5_search_idlist ( f, *list, vids[1] ) );
}
TRY ( _h5_free_idlist( f, &children ) );
return H5_SUCCESS;
return (*f->t->methods.adjacency->get_vertices_downadjacent_to_triangle)(
f, local_id, list);
}
/*
Compute downward adjacent vertices of all edges of tetrahedron.
*/
h5_err_t
h5t_get_vertices_downadjacent_to_tet (
h5_file_t * const f,
const h5_id_t eid,
const h5_id_t local_id,
h5_idlist_t **list
) {
h5_idlist_t *children;
TRY ( _h5_alloc_idlist ( f, &children, 8 ) );
h5_id_t i;
for ( i = 0; i < 6; i++ ) {
TRY( _compute_sections_of_edge (
f,
_h5t_build_edge_id ( i, eid ),
children ) );
}
TRY ( _h5_alloc_idlist ( f, list, 8 ) );
h5_id_t *kid = children->items;
for ( i = 0; i < children->num_items; i++, kid++ ) {
h5_id_t vids[2];
TRY ( h5t_get_local_vids_of_edge ( f, *kid, vids ) );
TRY ( _h5_search_idlist ( f, *list, vids[0] ) );
TRY ( _h5_search_idlist ( f, *list, vids[1] ) );
}
TRY ( _h5_free_idlist( f, &children ) );
return H5_SUCCESS;
return (*f->t->methods.adjacency->get_vertices_downadjacent_to_tet)(
f, local_id, list);
}
h5_err_t
h5t_get_edges_downadjacent_to_triangle (
h5_file_t * const f,
const h5_id_t did,
const h5_id_t local_id,
h5_idlist_t **list
) {
h5_idlist_t *children;
TRY ( _h5_alloc_idlist ( f, &children, 8 ) );
int map[4][3] = { {1,4,5}, {2,3,5}, {0,3,4}, {0,1,2} };
h5_id_t face_id = _h5t_get_face_id ( did );
h5_id_t eid = _h5t_get_elem_idx ( did );
h5_id_t i;
for ( i = 0; i < 3; i++ ) {
TRY( _compute_sections_of_edge (
f,
_h5t_build_edge_id ( map[face_id][i], eid ),
children ) );
}
TRY ( _h5_alloc_idlist ( f, list, 8 ) );
h5_id_t *kid = children->items;
for ( i = 0; i < children->num_items; i++, kid++ ) {
TRY ( _h5_search_idlist ( f, *list, *kid ) );
}
TRY ( _h5_free_idlist( f, &children ) );
return H5_SUCCESS;
return (*f->t->methods.adjacency->get_edges_downadjacent_to_triangle)(
f, local_id, list);
}
h5_err_t
h5t_get_edges_downadjacent_to_tet (
h5_file_t * const f,
const h5_id_t eid,
const h5_id_t local_id,
h5_idlist_t **list
) {
h5_idlist_t *children;
TRY ( _h5_alloc_idlist ( f, &children, 8 ) );
h5_id_t i;
for ( i = 0; i < 6; i++ ) {
TRY( _compute_sections_of_edge (
f,
_h5t_build_edge_id ( i, eid ),
children ) );
}
TRY ( _h5_alloc_idlist ( f, list, 8 ) );
h5_id_t *kid = children->items;
for ( i = 0; i < children->num_items; i++, kid++ ) {
TRY ( _h5_search_idlist ( f, *list, *kid ) );
}
TRY ( _h5_free_idlist( f, &children ) );
return H5_SUCCESS;
return (*f->t->methods.adjacency->get_edges_downadjacent_to_tet)(
f, local_id, list);
}
h5_err_t
h5t_get_triangles_downadjacent_to_tet (
h5_file_t * const f,
const h5_id_t eid,
const h5_id_t local_id,
h5_idlist_t **list
) {
h5_idlist_t *children;
TRY ( _h5_alloc_idlist ( f, &children, 8 ) );
h5_id_t i;
for ( i = 0; i < 4; i++ ) {
TRY( _compute_sections_of_triangle (
f,
_h5t_build_edge_id ( i, eid ),
children ) );
}
TRY ( _h5_alloc_idlist ( f, list, 8 ) );
h5_id_t *did = children->items;
for ( i = 0; i < children->num_items; i++, did++ ) {
TRY ( _h5_search_idlist ( f, *list, *did ) );
}
TRY ( _h5_free_idlist( f, &children ) );
return H5_SUCCESS;
return (*f->t->methods.adjacency->get_triangles_downadjacent_to_tet)(
f, local_id, list);
}
h5_err_t
@@ -652,14 +144,8 @@ h5t_release_list_of_adjacencies (
h5_file_t * const f,
h5_idlist_t **list
) {
TRY ( _h5_free_idlist ( f, list ) );
TRY ( h5priv_free_idlist ( f, list ) );
return H5_SUCCESS;
}
h5_err_t
_h5t_release_adjacencies (
h5_file_t * const f
) {
/* TO BE WRITTEN @@@ */
return H5_SUCCESS;
}
+6 -6
View File
@@ -3,7 +3,7 @@
#include "h5t_types_private.h"
const char *
_h5t_oid_names[] = {
h5tpriv_oid_names[] = {
"N.N.",
"vertex",
"edge",
@@ -12,7 +12,7 @@ _h5t_oid_names[] = {
};
const char *
_h5t_meshes_grpnames[] = {
h5tpriv_meshes_grpnames[] = {
"N.N.",
"N.N.",
"N.N.",
@@ -21,7 +21,7 @@ _h5t_meshes_grpnames[] = {
};
const size_t
_h5t_sizeof_elem[] = {
h5tpriv_sizeof_elem[] = {
0,
0,
0,
@@ -30,11 +30,11 @@ _h5t_sizeof_elem[] = {
};
const char *
_h5t_map_oid2str (
h5tpriv_map_oid2str (
h5_oid_t oid
) {
if ( oid < 0 || oid >= sizeof(_h5t_oid_names)/sizeof(char*) ) {
if ( oid < 0 || oid >= sizeof(h5tpriv_oid_names)/sizeof(char*) ) {
return "[invalid oid]";
}
return _h5t_oid_names[oid];
return h5tpriv_oid_names[oid];
}
+4 -4
View File
@@ -1,10 +1,10 @@
#ifndef __H5T_CONSTS_PRIVATE_H
#define __H5T_CONSTS_PRIVATE_H
extern const char * _h5t_oid_names[];
extern const char * _h5t_meshes_grpnames[];
extern const size_t _h5t_sizeof_elem[];
extern const char * h5tpriv_oid_names[];
extern const char * h5tpriv_meshes_grpnames[];
extern const size_t h5tpriv_sizeof_elem[];
const char *_h5t_map_oid2str ( h5_oid_t oid );
const char *h5tpriv_map_oid2str ( h5_oid_t oid );
#endif
+13 -14
View File
@@ -2,7 +2,6 @@
#define __H5T_CORE_H
#include "h5t_adjacencies.h"
#include "h5t_boundaries.h"
#include "h5t_inquiry.h"
#include "h5t_map.h"
#include "h5t_openclose.h"
@@ -41,39 +40,39 @@
#define H5T_ETYPE_TRIANGLE ((h5_id_t)3)
#define H5T_ETYPE_TET ((h5_id_t)4)
#define _h5t_set_entity_type( type, elem_idx ) \
#define h5tpriv_set_entity_type( type, elem_idx ) \
( \
((h5_id_t)(type) << (sizeof(h5_id_t)*8-4)) | \
((h5_id_t)(elem_idx)) \
)
#define _h5t_get_entity_type( entity_id ) \
#define h5tpriv_get_entity_type( entity_id ) \
((entity_id & H5T_ETYPE_MASK) >> (sizeof(h5_id_t)*8-4))
#define _h5t_build_id( type, comp_idx, elem_idx ) \
#define h5tpriv_build_id( type, comp_idx, elem_idx ) \
( \
((h5_id_t)(type) << (sizeof(h5_id_t)*8-4)) | \
((h5_id_t)(comp_idx) << (sizeof(h5_id_t)*7)) | \
((h5_id_t)(elem_idx) & H5T_ELEM_MASK) \
)
#define _h5t_build_vertex_id( comp_idx, elem_idx ) \
( _h5t_build_id ( H5T_ETYPE_VERTEX, comp_idx, elem_idx ) )
#define h5tpriv_build_vertex_id( comp_idx, elem_idx ) \
( h5tpriv_build_id ( H5T_ETYPE_VERTEX, comp_idx, elem_idx ) )
#define _h5t_build_edge_id( comp_idx, elem_idx ) \
( _h5t_build_id ( H5T_ETYPE_EDGE, comp_idx, elem_idx ) )
#define h5tpriv_build_edge_id( comp_idx, elem_idx ) \
( h5tpriv_build_id ( H5T_ETYPE_EDGE, comp_idx, elem_idx ) )
#define _h5t_build_triangle_id( comp_idx, elem_idx ) \
( _h5t_build_id ( H5T_ETYPE_TRIANGLE, comp_idx, elem_idx ) )
#define h5tpriv_build_triangle_id( comp_idx, elem_idx ) \
( h5tpriv_build_id ( H5T_ETYPE_TRIANGLE, comp_idx, elem_idx ) )
#define _h5t_build_elem_id( elem_idx ) \
( _h5t_build_id ( f->t->mesh_type, 0, elem_idx ) )
#define h5tpriv_build_elem_id( elem_idx ) \
( h5tpriv_build_id ( f->t->mesh_type, 0, elem_idx ) )
#define _h5t_get_face_id( entity_id ) \
#define h5tpriv_get_face_id( entity_id ) \
( (entity_id & H5T_COMPONENT_ID_MASK) >> (sizeof(h5_id_t)*7) )
#define _h5t_get_elem_idx( entity_id ) \
#define h5tpriv_get_elem_idx( entity_id ) \
( entity_id & H5T_ELEM_MASK )
#endif
+1 -2
View File
@@ -3,8 +3,7 @@
#define H5T_CONTAINER_GRPNAME "Topo"
#include "h5t_adjacencies_private.h"
#include "h5t_boundaries_private.h"
#include "h5t_tetm_adjacencies_private.h"
#include "h5t_consts_private.h"
#include "h5t_errorhandling_private.h"
#include "h5t_hsearch_private.h"
+19 -19
View File
@@ -11,28 +11,28 @@
h5_err_t
_h5t_error_local_elem_nexist (
h5tpriv_error_local_elem_nexist (
h5_file_t * const f,
h5_id_t local_vids[]
) {
switch ( f->t->mesh_type ) {
case H5_OID_TETRAHEDRON:
return h5_error (
f,
H5_ERR_NOENTRY,
"Tetrahedron with local vertex IDs "
"(%lld,%lld,%lld,%lld) doesn't exist!",
local_vids[0], local_vids[1],
local_vids[2], local_vids[3] );
case H5_OID_TRIANGLE:
return h5_error (
f,
H5_ERR_NOENTRY,
"Triangle with local vertex IDs "
"(%lld,%lld,%lld) doesn't exist!",
local_vids[0], local_vids[1], local_vids[2] );
default:
return h5_error_internal( f, __FILE__, __func__, __LINE__ );
char s[1024];
int num_chars_printed = snprintf (s, sizeof(s), "%lld,", local_vids[0]);
int i;
for (i = 1; i < f->t->mesh_type; i++) {
num_chars_printed += snprintf (
s+num_chars_printed, sizeof(s)-num_chars_printed,
"%lld,", local_vids[i]);
if ((sizeof(s) - num_chars_printed) < 32) {
h5_error_internal ( f, __FILE__, __func__, __LINE__ );
}
}
return h5_error (
f,
H5_ERR_NOENTRY,
"Element with local vertex IDs "
"(%s) doesn't exist!",
s );
}
+8 -8
View File
@@ -2,31 +2,31 @@
#define __H5T_ERRORHANDLING_PRIVATE_H
h5_err_t
_h5t_error_local_elem_nexist (
h5tpriv_error_local_elem_nexist (
h5_file_t * const f,
h5_id_t local_vids[]
);
#define _h5t_error_undef_mesh( f ) \
#define h5tpriv_error_undef_mesh( f ) \
h5_error( \
f, \
H5_ERR_INVAL, \
"Mesh not yet defined." );
#define _h5t_error_undef_level( f ) \
#define h5tpriv_error_undef_level( f ) \
h5_error( \
f, \
H5_ERR_INVAL, \
"Level not defined." );
#define _h5t_error_nexist_level( f, level_id ) \
#define h5tpriv_error_nexist_level( f, level_id ) \
h5_error( \
f, \
H5_ERR_INVAL, \
"Level %lld doesn't exist.", level_id );
#define _h5t_error_global_id_nexist( f, name, id ) \
#define h5tpriv_error_global_id_nexist( f, name, id ) \
h5_error( \
f, \
H5_ERR_NOENTRY, \
@@ -34,14 +34,14 @@ _h5t_error_local_elem_nexist (
name, id );
#define _h5t_error_global_triangle_id_nexist( f, vids ) \
#define h5tpriv_error_global_triangle_id_nexist( f, vids ) \
h5_error( \
f, \
H5_ERR_NOENTRY, \
"Triangle with global vertex ids (%lld,%lld,%lld) doesn't exist!", \
vids[0], vids[1], vids[2] );
#define _h5t_error_local_triangle_nexist( f, local_vids ) \
#define h5tpriv_error_local_triangle_nexist( f, local_vids ) \
h5_error( \
f, \
H5_ERR_NOENTRY, \
@@ -49,7 +49,7 @@ _h5t_error_local_elem_nexist (
local_vids[0], local_vids[1], local_vids[2] );
#define _h5t_error_store_boundaryface_local_id( f, local_fid ) \
#define h5tpriv_error_store_boundaryface_local_id( f, local_fid ) \
h5_error( \
f, \
H5_ERR_INVAL, \
+34 -34
View File
@@ -29,12 +29,12 @@ _compute_te_hashval (
}
h5_err_t
_h5t_create_te_htab (
h5tpriv_create_te_htab (
h5_file_t * const f,
size_t nel
) {
h5t_adjacencies_t *a = &f->t->adjacencies;
return _h5_hcreate (
return h5priv_hcreate (
f,
nel,
&a->te_hash,
@@ -43,21 +43,21 @@ _h5t_create_te_htab (
}
h5_err_t
_h5t_resize_te_htab (
h5tpriv_resize_te_htab (
h5_file_t * const f,
size_t nel
) {
h5t_adjacencies_t *a = &f->t->adjacencies;
if ( a->te_hash.size == 0 ) {
TRY ( _h5t_create_te_htab ( f, nel ) );
TRY ( h5tpriv_create_te_htab ( f, nel ) );
} else if ( a->te_hash.size < nel ) {
TRY ( _h5_hresize ( f, nel, &a->te_hash ) );
TRY ( h5priv_hresize ( f, nel, &a->te_hash ) );
}
return H5_SUCCESS;
}
h5_err_t
_h5t_search_te2 (
h5tpriv_search_te2 (
h5_file_t * const f,
h5_id_t face,
h5_id_t eid,
@@ -67,7 +67,7 @@ _h5t_search_te2 (
h5t_adjacencies_t *a = &t->adjacencies;
void *__retval;
TRY ( *entry = _h5_calloc ( f, 1, sizeof(**entry) ) );
TRY ( *entry = h5priv_calloc ( f, 1, sizeof(**entry) ) );
TRY ( h5t_get_local_vids_of_edge2 (
f,
@@ -79,25 +79,25 @@ _h5t_search_te2 (
*/
if ( (a->te_hash.size*6) <= (a->te_hash.filled<<3) ) {
h5_id_t num_elems = t->num_elems[t->num_levels-1];
TRY ( _h5_hresize (
TRY ( h5priv_hresize (
f,
3*(num_elems - eid),
&a->te_hash ) );
}
TRY ( _h5_hsearch (
TRY ( h5priv_hsearch (
f,
*entry,
H5_ENTER,
&__retval,
&a->te_hash ) );
h5t_te_entry_t *retval = (h5t_te_entry_t *)__retval;
TRY ( _h5_search_idlist (
TRY ( h5priv_search_idlist (
f,
&retval->value,
_h5t_build_edge_id ( face, eid ) ) );
h5tpriv_build_edge_id ( face, eid ) ) );
if ( retval->value.num_items > 1 ) {
/* search returned an existing entry */
TRY ( _h5_free ( f, *entry ) );
TRY ( h5priv_free ( f, *entry ) );
}
return H5_SUCCESS;
}
@@ -108,13 +108,13 @@ _h5t_search_te2 (
Passing item with type entry type.
*/
h5_err_t
_h5t_find_te (
h5tpriv_find_te (
h5_file_t * const f,
h5t_te_entry_t *item,
h5t_te_entry_t **retval
) {
void *__ret;
TRY ( _h5_hsearch (
TRY ( h5priv_hsearch (
f,
item,
H5_FIND,
@@ -130,7 +130,7 @@ _h5t_find_te (
Passing item with face and local element ID.
*/
h5_err_t
_h5t_find_te2 (
h5tpriv_find_te2 (
h5_file_t * const f,
h5_id_t face_id,
h5_id_t local_eid,
@@ -143,7 +143,7 @@ _h5t_find_te2 (
local_eid,
item.key.vids
) );
return _h5t_find_te ( f, &item, retval );
return h5tpriv_find_te ( f, &item, retval );
}
static int
@@ -172,12 +172,12 @@ _compute_td_hashval (
}
h5_err_t
_h5t_create_td_htab (
h5tpriv_create_td_htab (
h5_file_t * const f,
size_t nel
) {
h5t_adjacencies_t *a = &f->t->adjacencies;
return _h5_hcreate (
return h5priv_hcreate (
f,
nel,
&a->td_hash,
@@ -186,21 +186,21 @@ _h5t_create_td_htab (
}
h5_err_t
_h5t_resize_td_htab (
h5tpriv_resize_td_htab (
h5_file_t * const f,
size_t nel
) {
h5t_adjacencies_t *a = &f->t->adjacencies;
if ( a->td_hash.size == 0 ) {
TRY ( _h5t_create_td_htab ( f, nel ) );
TRY ( h5tpriv_create_td_htab ( f, nel ) );
} else if ( a->td_hash.size < nel ) {
TRY ( _h5_hresize ( f, nel, &a->td_hash ) );
TRY ( h5priv_hresize ( f, nel, &a->td_hash ) );
}
return H5_SUCCESS;
}
h5_err_t
_h5t_search_td2 (
h5tpriv_search_td2 (
h5_file_t * const f,
h5_id_t face,
h5_id_t eid,
@@ -210,7 +210,7 @@ _h5t_search_td2 (
h5t_adjacencies_t *a = &f->t->adjacencies;
void *__retval;
TRY ( *entry = _h5_calloc ( f, 1, sizeof(**entry) ) );
TRY ( *entry = h5priv_calloc ( f, 1, sizeof(**entry) ) );
TRY ( h5t_get_local_vids_of_triangle2 (
f,
@@ -222,51 +222,51 @@ _h5t_search_td2 (
*/
if ( (a->td_hash.size*6) <= (a->td_hash.filled<<3) ) {
h5_id_t num_elems = t->num_elems[t->num_levels-1];
TRY ( _h5_hresize (
TRY ( h5priv_hresize (
f,
3*(num_elems-eid),
&a->td_hash ) );
}
TRY ( _h5_hsearch (
TRY ( h5priv_hsearch (
f,
*entry,
H5_ENTER,
&__retval,
&a->td_hash ) );
h5t_td_entry_t *retval = (h5t_td_entry_t *)__retval;
TRY ( _h5_search_idlist (
TRY ( h5priv_search_idlist (
f,
&retval->value,
_h5t_build_triangle_id ( face, eid ) ) );
h5tpriv_build_triangle_id ( face, eid ) ) );
if ( retval->value.num_items > 1 ) {
TRY ( _h5_free ( f, *entry ) );
TRY ( h5priv_free ( f, *entry ) );
}
return H5_SUCCESS;
}
h5_err_t
_h5t_find_td (
h5tpriv_find_td (
h5_file_t * const f,
h5t_td_entry_t *item,
h5t_td_entry_t **retval
) {
void *__ret;
_h5_hsearch (
h5priv_hsearch (
f,
item,
H5_FIND,
&__ret,
&f->t->adjacencies.td_hash );
if ( __ret == NULL ) {
return _h5t_error_local_triangle_nexist( f, item->key.vids );
return h5tpriv_error_local_triangle_nexist( f, item->key.vids );
}
*retval = (h5t_td_entry_t *)__ret;
return H5_SUCCESS;
}
h5_err_t
_h5t_find_td2 (
h5tpriv_find_td2 (
h5_file_t * const f,
h5_id_t face_id,
h5_id_t local_eid,
@@ -278,11 +278,11 @@ _h5t_find_td2 (
face_id,
local_eid,
item.key.vids ) );
return _h5t_find_td ( f, &item, retval );
return h5tpriv_find_td ( f, &item, retval );
}
h5_err_t
_h5t_find_tv2 (
h5tpriv_find_tv2 (
h5_file_t * const f,
h5_id_t cid,
h5_id_t el_idx,
+11 -11
View File
@@ -21,19 +21,19 @@ typedef struct h5_td_entry {
h5_err_t
_h5t_create_te_htab (
h5tpriv_create_te_htab (
h5_file_t * const f,
size_t nel
);
h5_err_t
_h5t_resize_te_htab (
h5tpriv_resize_te_htab (
h5_file_t * const f,
size_t nel
);
h5_err_t
_h5t_search_te2 (
h5tpriv_search_te2 (
h5_file_t * const f,
h5_id_t face_id,
h5_id_t local_eid,
@@ -41,14 +41,14 @@ _h5t_search_te2 (
);
h5_err_t
_h5t_find_te (
h5tpriv_find_te (
h5_file_t * const f,
h5t_te_entry_t *item,
h5t_te_entry_t **retval
);
h5_err_t
_h5t_find_te2 (
h5tpriv_find_te2 (
h5_file_t * const f,
h5_id_t face_id,
h5_id_t local_eid,
@@ -57,19 +57,19 @@ _h5t_find_te2 (
h5_err_t
_h5t_create_td_htab (
h5tpriv_create_td_htab (
h5_file_t * const f,
size_t nel
);
h5_err_t
_h5t_resize_td_htab (
h5tpriv_resize_td_htab (
h5_file_t * const f,
size_t nel
);
h5_err_t
_h5t_search_td2 (
h5tpriv_search_td2 (
h5_file_t * const f,
h5_id_t face_id,
h5_id_t local_eid,
@@ -77,14 +77,14 @@ _h5t_search_td2 (
);
h5_err_t
_h5t_find_td (
h5tpriv_find_td (
h5_file_t * const f,
h5t_td_entry_t *item,
h5t_td_entry_t **retval
);
h5_err_t
_h5t_find_td2 (
h5tpriv_find_td2 (
h5_file_t * const f,
h5_id_t face_id,
h5_id_t local_eid,
@@ -92,7 +92,7 @@ _h5t_find_td2 (
);
h5_err_t
_h5t_find_tv2 (
h5tpriv_find_tv2 (
h5_file_t * const f,
h5_id_t cid,
h5_id_t el_idx,
+7 -7
View File
@@ -28,11 +28,11 @@ h5t_get_num_meshes (
return t->num_meshes;
}
if ( t->topo_gid < 0 ) {
TRY( _h5t_open_topo_group ( f ) );
TRY( h5tpriv_open_topo_group ( f ) );
}
TRY( t->num_meshes = (h5_size_t)hdf5_get_num_objects (
t->topo_gid,
_h5t_meshes_grpnames[type_id],
h5tpriv_meshes_grpnames[type_id],
H5G_GROUP ) );
return t->num_meshes;
@@ -52,7 +52,7 @@ h5t_get_num_levels (
h5t_fdata_t *t = f->t;
if ( t->cur_mesh < 0 ) {
return _h5t_error_undef_mesh ( f );
return h5tpriv_error_undef_mesh ( f );
}
return t->num_levels;
}
@@ -92,10 +92,10 @@ h5t_get_num_elems (
h5t_fdata_t *t = f->t;
if ( t->cur_mesh < 0 ) {
return _h5t_error_undef_mesh ( f );
return h5tpriv_error_undef_mesh ( f );
}
if ( t->cur_level < 0 ) {
return _h5t_error_undef_level ( f );
return h5tpriv_error_undef_level ( f );
}
return t->num_elems_on_level[t->cur_level];
}
@@ -121,10 +121,10 @@ h5t_get_num_vertices (
h5t_fdata_t *t = f->t;
if ( t->cur_mesh < 0 ) {
return _h5t_error_undef_mesh ( f );
return h5tpriv_error_undef_mesh ( f );
}
if ( t->cur_level < 0 ) {
return _h5t_error_undef_level ( f );
return h5tpriv_error_undef_level ( f );
}
return t->num_vertices[t->cur_level];
}
+42 -34
View File
@@ -23,7 +23,7 @@ _cmp_vertices (
) {
int i;
for ( i = 0; i < 3; i++ ) {
h5_int64_t diff = _h5_fcmp ( P0[i], P1[i], 10 );
h5_int64_t diff = h5priv_fcmp ( P0[i], P1[i], 10 );
if ( diff < 0 ) return -1;
else if ( diff > 0 ) return 1;
}
@@ -50,7 +50,7 @@ _qsort_cmp_vertices (
Sort vertices. Store local id's in a sorted array for binary search.
*/
h5_err_t
_h5t_sort_vertices (
h5tpriv_sort_vertices (
h5_file_t * const f
) {
h5t_fdata_t *t = f->t;
@@ -65,7 +65,7 @@ _h5t_sort_vertices (
}
t->sorted_lvertices.num_items = num_vertices;
_h5_qsort_r (
h5priv_qsort_r (
t->sorted_lvertices.items,
num_vertices,
sizeof(t->sorted_lvertices.items[0]),
@@ -83,7 +83,7 @@ _h5t_sort_vertices (
\return else negativ value
*/
h5_id_t
_h5t_get_local_vid (
h5tpriv_get_local_vid (
h5_file_t * const f,
h5_float64_t P[3]
) {
@@ -210,7 +210,7 @@ _qsort_cmp_elems1 (
binary search.
*/
h5_err_t
_h5t_sort_elems (
h5tpriv_sort_elems (
h5_file_t *f
) {
h5t_fdata_t *t = f->t;
@@ -221,20 +221,20 @@ _h5t_sort_elems (
int k;
h5_id_t i;
for ( k = 0; k < 2; k++ ) {
TRY( _h5_alloc_idlist_items ( f, &t->sorted_elems[k], num_elems ) );
TRY( h5priv_alloc_idlist_items ( f, &t->sorted_elems[k], num_elems ) );
for ( i = local_eid; i < num_elems; i++ ) {
t->sorted_elems[k].items[i] = i;
}
t->sorted_elems[k].num_items = num_elems;
}
_h5_qsort_r (
h5priv_qsort_r (
t->sorted_elems[0].items,
num_elems,
sizeof(t->sorted_elems[0].items[0]),
f,
_qsort_cmp_elems0 );
_h5_qsort_r (
h5priv_qsort_r (
t->sorted_elems[1].items,
num_elems,
sizeof(t->sorted_elems[1].items[0]),
@@ -248,7 +248,7 @@ _h5t_sort_elems (
Sort (small) array of local vertex ids geometrically.
*/
h5_err_t
_h5t_sort_local_vids (
h5tpriv_sort_local_vids (
h5_file_t * const f,
h5_id_t * const local_vids, /* IN/OUT: local vertex ids */
const h5_size_t size /* size of array */
@@ -284,7 +284,7 @@ _search_elem (
) {
h5t_fdata_t *t = f->t;
_h5t_sort_local_vids ( f, local_vids, t->mesh_type );
h5tpriv_sort_local_vids ( f, local_vids, t->mesh_type );
register h5_id_t low = 0;
register h5_id_t high = t->sorted_elems[0].num_items - 1;
@@ -302,7 +302,7 @@ _search_elem (
else
return mid; // found
}
return _h5t_error_local_elem_nexist ( f, local_vids );
return h5tpriv_error_local_elem_nexist ( f, local_vids );
}
/*!
@@ -343,9 +343,9 @@ h5t_map_global_vid2local (
) {
struct h5t_fdata *t = f->t;
h5_id_t local_id = _h5_search_idmap ( &t->map_vertex_g2l, global_id );
h5_id_t local_id = h5priv_search_idmap ( &t->map_vertex_g2l, global_id );
if ( local_id < 0 )
return _h5t_error_global_id_nexist ( f, "vertex", global_id );
return h5tpriv_error_global_id_nexist ( f, "vertex", global_id );
return local_id;
}
@@ -376,7 +376,7 @@ h5t_map_local_eid2global (
if ( local_eid < 0 || local_eid > t->num_elems[t->num_levels-1] )
return HANDLE_H5_OUT_OF_RANGE_ERR (
f, _h5t_oid_names[t->mesh_type], local_eid );
f, h5tpriv_oid_names[t->mesh_type], local_eid );
switch ( t->mesh_type ) {
case H5_OID_TETRAHEDRON:
@@ -402,9 +402,9 @@ h5t_map_global_eid2local (
const h5_id_t global_eid
) {
struct h5t_fdata *t = f->t;
h5_id_t local_eid = _h5_search_idmap ( &t->map_elem_g2l, global_eid );
h5_id_t local_eid = h5priv_search_idmap ( &t->map_elem_g2l, global_eid );
if ( local_eid < 0 )
return _h5t_error_global_id_nexist ( f, "elem", global_eid );
return h5tpriv_error_global_id_nexist ( f, "elem", global_eid );
return local_eid;
}
@@ -421,11 +421,11 @@ h5t_map_global_triangle_id2local (
struct h5t_fdata *t = f->t;
switch ( t->mesh_type ) {
case H5_OID_TETRAHEDRON: {
h5_id_t global_tet_id = _h5t_get_elem_idx ( global_tri_id );
h5_id_t global_tet_id = h5tpriv_get_elem_idx ( global_tri_id );
h5_id_t local_tet_id = h5t_map_global_eid2local (
f, global_tet_id );
if ( local_tet_id < 0 )
return _h5t_error_global_id_nexist (
return h5tpriv_error_global_id_nexist (
f, "triangle", global_tri_id );
return local_tet_id | (global_tri_id & ~H5T_ELEM_MASK);
}
@@ -449,7 +449,7 @@ h5t_map_local_triangle_id2global (
struct h5t_fdata *t = f->t;
switch ( t->mesh_type ) {
case H5_OID_TETRAHEDRON: {
h5_id_t local_tet_id = _h5t_get_elem_idx ( local_tri_id );
h5_id_t local_tet_id = h5tpriv_get_elem_idx ( local_tri_id );
h5_id_t global_tet_id = h5t_map_local_eid2global (
f, local_tet_id );
if ( global_tet_id < 0 )
@@ -466,7 +466,7 @@ h5t_map_local_triangle_id2global (
h5_err_t
_h5t_rebuild_global_2_local_map_of_vertices (
h5tpriv_rebuild_global_2_local_map_of_vertices (
h5_file_t * const f
) {
struct h5t_fdata *t = f->t;
@@ -479,13 +479,13 @@ _h5t_rebuild_global_2_local_map_of_vertices (
t->map_vertex_g2l.items[local_vid].local_id = local_vid;
t->map_vertex_g2l.num_items++;
}
_h5_sort_idmap ( &t->map_vertex_g2l );
h5priv_sort_idmap ( &t->map_vertex_g2l );
return H5_SUCCESS;
}
h5_err_t
_h5t_rebuild_global_2_local_map_of_elems (
h5tpriv_rebuild_global_2_local_map_of_elems (
h5_file_t * const f
) {
h5t_fdata_t *t = f->t;
@@ -493,7 +493,7 @@ _h5t_rebuild_global_2_local_map_of_elems (
h5_id_t local_eid = t->cur_level > 0 ? t->num_elems[t->cur_level-1] : 0;
h5_id_t num_elems = t->num_elems[t->num_levels-1];
h5_idmap_el_t *item = &t->map_elem_g2l.items[local_eid];
size_t offset = _h5t_sizeof_elem[t->mesh_type];
size_t offset = h5tpriv_sizeof_elem[t->mesh_type];
void *elemp = t->elems.data + local_eid*offset;
for ( ;
local_eid < num_elems;
@@ -506,7 +506,7 @@ _h5t_rebuild_global_2_local_map_of_elems (
item->local_id = local_eid;
t->map_elem_g2l.num_items++;
}
_h5_sort_idmap ( &t->map_elem_g2l );
h5priv_sort_idmap ( &t->map_elem_g2l );
return H5_SUCCESS;
}
@@ -521,22 +521,30 @@ h5t_get_local_vids_of_edge (
const h5_id_t id,
h5_id_t *edge
) {
h5_id_t face_id = _h5t_get_face_id ( id );
h5_id_t el_id = _h5t_get_elem_idx ( id );
h5_id_t face_id = h5tpriv_get_face_id ( id );
h5_id_t el_id = h5tpriv_get_elem_idx ( id );
return h5t_get_local_vids_of_edge2 ( f, face_id, el_id, edge );
}
/*!
Get local vertex ID's of an edge. The edge is specified by the local
element index and the sub-entity ID of the edge according the reference
element.
This function can be used with tetrahedral and triangle meshes.
*/
h5_err_t
h5t_get_local_vids_of_edge2 (
h5_file_t * const f,
const h5_id_t face,
const h5_id_t id,
h5_id_t *edge
const h5_id_t edge_id, // edge id according reference element
const h5_id_t elem_idx, // local element index
h5_id_t *edge // OUT: vertex ID's
) {
// map edge id to corresponding vertex ID's of reference element
int map[6][2] = { { 0,1 }, {1,2}, {0,2}, {0,3}, {1,3}, {2,3} };
h5_elem_ldta_t *el = &f->t->elems_ldta[id];
edge[0] = el->local_vids[map[face][0]];
edge[1] = el->local_vids[map[face][1]];
h5_elem_ldta_t *el = &f->t->elems_ldta[elem_idx];
edge[0] = el->local_vids[map[edge_id][0]];
edge[1] = el->local_vids[map[edge_id][1]];
return H5_SUCCESS;
}
@@ -546,8 +554,8 @@ h5t_get_local_vids_of_triangle (
const h5_id_t id,
h5_id_t *vids
) {
h5_id_t face = _h5t_get_face_id ( id );
h5_id_t el_id = _h5t_get_elem_idx ( id );
h5_id_t face = h5tpriv_get_face_id ( id );
h5_id_t el_id = h5tpriv_get_elem_idx ( id );
return h5t_get_local_vids_of_triangle2 ( f, face, el_id, vids );
}
+1 -1
View File
@@ -46,7 +46,7 @@ h5t_map_global_triangle_id2local (
);
h5_id_t
_h5t_get_local_vid (
h5tpriv_get_local_vid (
h5_file_t * const f,
h5_float64_t P[3]
);
+5 -5
View File
@@ -2,29 +2,29 @@
#define __H5T_MAP_PRIVATE_H
h5_err_t
_h5t_sort_local_vids (
h5tpriv_sort_local_vids (
h5_file_t * const f,
h5_id_t * const local_vids,
const h5_size_t size
);
h5_err_t
_h5t_sort_vertices (
h5tpriv_sort_vertices (
h5_file_t * const f
);
h5_err_t
_h5t_sort_elems (
h5tpriv_sort_elems (
h5_file_t * const f
);
h5_err_t
_h5t_rebuild_global_2_local_map_of_vertices (
h5tpriv_rebuild_global_2_local_map_of_vertices (
h5_file_t * const f
);
h5_err_t
_h5t_rebuild_global_2_local_map_of_elems (
h5tpriv_rebuild_global_2_local_map_of_elems (
h5_file_t * const f
);
+87 -86
View File
@@ -11,15 +11,16 @@
#include "h5_core/h5_core_private.h"
static struct h5t_methods tet_funcs = {
_h5t_alloc_tets,
_h5t_store_tet,
_h5t_refine_tet
h5tpriv_alloc_tets,
h5tpriv_store_tet,
h5tpriv_refine_tet,
&h5tpriv_tetm_adjacency_methods
};
static struct h5t_methods tri_funcs = {
_h5t_alloc_tris,
_h5t_store_tri,
_h5t_refine_tri
h5tpriv_alloc_tris,
h5tpriv_store_tri,
h5tpriv_refine_tri
};
/*
@@ -34,14 +35,14 @@ _create_array_types (
hsize_t dims[1] = { 3 };
TRY(
dtypes->h5_coord3d_t = _hdf_create_array_type (
dtypes->h5_coord3d_t = h5priv_create_hdf5_array_type (
f,
H5_FLOAT64_T,
1,
dims )
);
TRY(
dtypes->h5_3id_t = _hdf_create_array_type (
dtypes->h5_3id_t = h5priv_create_hdf5_array_type (
f,
H5_ID_T,
1,
@@ -49,7 +50,7 @@ _create_array_types (
);
dims[0] = 4;
TRY(
dtypes->h5_4id_t = _hdf_create_array_type (
dtypes->h5_4id_t = h5priv_create_hdf5_array_type (
f,
H5_ID_T,
1,
@@ -66,19 +67,19 @@ _create_vertex_type (
h5_dtypes_t *dtypes = &f->t->dtypes;
TRY(
dtypes->h5_vertex_t = _hdf_create_type (
dtypes->h5_vertex_t = h5priv_create_hdf5_type (
f,
H5_COMPOUND_T,
sizeof(struct h5_vertex) ) );
TRY(
_hdf_insert_type (
h5priv_insert_hdf5_type (
f,
dtypes->h5_vertex_t,
"global_vid",
HOFFSET(struct h5_vertex, global_vid),
H5_ID_T ) );
TRY(
_hdf_insert_type (
h5priv_insert_hdf5_type (
f,
dtypes->h5_vertex_t,
"P",
@@ -95,33 +96,33 @@ _create_triangle_type (
h5_dtypes_t *dtypes = &f->t->dtypes;
TRY(
dtypes->h5_triangle_t = _hdf_create_type (
dtypes->h5_triangle_t = h5priv_create_hdf5_type (
f,
H5_COMPOUND_T,
sizeof(struct h5_triangle) ) );
TRY(
_hdf_insert_type (
h5priv_insert_hdf5_type (
f,
dtypes->h5_triangle_t,
"global_eid",
HOFFSET(struct h5_triangle, global_eid),
H5_ID_T ) );
TRY(
_hdf_insert_type (
h5priv_insert_hdf5_type (
f,
dtypes->h5_triangle_t,
"global_parent_eid",
HOFFSET(struct h5_triangle, global_parent_eid),
H5_ID_T ) );
TRY(
_hdf_insert_type (
h5priv_insert_hdf5_type (
f,
dtypes->h5_triangle_t,
"global_child_eid",
HOFFSET(struct h5_triangle, global_child_eid),
H5_ID_T ) );
TRY(
_hdf_insert_type (
h5priv_insert_hdf5_type (
f,
dtypes->h5_triangle_t,
"global_vids",
@@ -138,19 +139,19 @@ _create_tag_types (
h5_dtypes_t *dtypes = &f->t->dtypes;
TRY (
dtypes->h5t_tag_idx_t = _hdf_create_type (
dtypes->h5t_tag_idx_t = h5priv_create_hdf5_type (
f,
H5_COMPOUND_T,
sizeof(h5t_tag_idx_t) ) );
TRY (
_hdf_insert_type (
h5priv_insert_hdf5_type (
f,
dtypes->h5t_tag_idx_t,
"eid",
HOFFSET(h5t_tag_idx_t, eid),
H5_ID_T ) );
TRY (
_hdf_insert_type (
h5priv_insert_hdf5_type (
f,
dtypes->h5t_tag_idx_t,
"idx",
@@ -167,33 +168,33 @@ _create_tet_type (
h5_dtypes_t *dtypes = &f->t->dtypes;
TRY(
dtypes->h5_tet_t = _hdf_create_type (
dtypes->h5_tet_t = h5priv_create_hdf5_type (
f,
H5_COMPOUND_T,
sizeof(struct h5_tetrahedron) ) );
TRY(
_hdf_insert_type (
h5priv_insert_hdf5_type (
f,
dtypes->h5_tet_t,
"global_eid",
HOFFSET(struct h5_tetrahedron, global_eid),
H5_ID_T ) );
TRY(
_hdf_insert_type (
h5priv_insert_hdf5_type (
f,
dtypes->h5_tet_t,
"global_parent_eid",
HOFFSET(struct h5_tetrahedron, global_parent_eid),
H5_ID_T ) );
TRY(
_hdf_insert_type (
h5priv_insert_hdf5_type (
f,
dtypes->h5_tet_t,
"global_child_eid",
HOFFSET(struct h5_tetrahedron, global_child_eid),
H5T_NATIVE_INT32 ) );
TRY(
_hdf_insert_type (
h5priv_insert_hdf5_type (
f,
dtypes->h5_tet_t,
"global_vids",
@@ -206,7 +207,7 @@ _create_tet_type (
#if 0
h5_err_t
_h5_set_dataset_properties (
h5priv_set_dataset_properties (
h5_dsinfo_t *dsinfo,
const char *name,
const hid_t type,
@@ -246,10 +247,10 @@ _init_fdata (
t->dsinfo_vertices.max_dims[0] = H5S_UNLIMITED;
t->dsinfo_vertices.chunk_dims[0] = 4096;
t->dsinfo_vertices.type_id = t->dtypes.h5_vertex_t;
TRY( t->dsinfo_vertices.create_prop = _hdf_create_property (
TRY( t->dsinfo_vertices.create_prop = h5priv_create_hdf5_property (
f,
H5P_DATASET_CREATE ) );
TRY( _hdf_set_chunk_property (
TRY( h5priv_set_hdf5_chunk_property (
f,
t->dsinfo_vertices.create_prop,
t->dsinfo_vertices.rank,
@@ -263,10 +264,10 @@ _init_fdata (
t->dsinfo_num_vertices.max_dims[0] = H5S_UNLIMITED;
t->dsinfo_num_vertices.chunk_dims[0] = 4096;
t->dsinfo_num_vertices.type_id = t->dtypes.h5_id_t;
TRY( t->dsinfo_num_vertices.create_prop = _hdf_create_property (
TRY( t->dsinfo_num_vertices.create_prop = h5priv_create_hdf5_property (
f,
H5P_DATASET_CREATE ) );
TRY( _hdf_set_chunk_property (
TRY( h5priv_set_hdf5_chunk_property (
f,
t->dsinfo_num_vertices.create_prop,
t->dsinfo_num_vertices.rank,
@@ -279,10 +280,10 @@ _init_fdata (
t->dsinfo_elems.dims[0] = 0;
t->dsinfo_elems.max_dims[0] = H5S_UNLIMITED;
t->dsinfo_elems.chunk_dims[0] = 4096;
TRY( t->dsinfo_elems.create_prop = _hdf_create_property (
TRY( t->dsinfo_elems.create_prop = h5priv_create_hdf5_property (
f,
H5P_DATASET_CREATE ) );
TRY( _hdf_set_chunk_property (
TRY( h5priv_set_hdf5_chunk_property (
f,
t->dsinfo_elems.create_prop,
t->dsinfo_elems.rank,
@@ -296,10 +297,10 @@ _init_fdata (
t->dsinfo_num_elems.max_dims[0] = H5S_UNLIMITED;
t->dsinfo_num_elems.chunk_dims[0] = 4096;
t->dsinfo_num_elems.type_id = t->dtypes.h5_id_t;
TRY( t->dsinfo_num_elems.create_prop = _hdf_create_property (
TRY( t->dsinfo_num_elems.create_prop = h5priv_create_hdf5_property (
f,
H5P_DATASET_CREATE ) );
TRY( _hdf_set_chunk_property (
TRY( h5priv_set_hdf5_chunk_property (
f,
t->dsinfo_num_elems.create_prop,
t->dsinfo_num_elems.rank,
@@ -313,10 +314,10 @@ _init_fdata (
t->dsinfo_num_elems_on_level.max_dims[0] = H5S_UNLIMITED;
t->dsinfo_num_elems_on_level.chunk_dims[0] = 4096;
t->dsinfo_num_elems_on_level.type_id = t->dtypes.h5_id_t;
TRY( t->dsinfo_num_elems_on_level.create_prop = _hdf_create_property (
TRY( t->dsinfo_num_elems_on_level.create_prop = h5priv_create_hdf5_property (
f,
H5P_DATASET_CREATE ) );
TRY( _hdf_set_chunk_property (
TRY( h5priv_set_hdf5_chunk_property (
f,
t->dsinfo_num_elems_on_level.create_prop,
t->dsinfo_num_elems_on_level.rank,
@@ -337,11 +338,11 @@ _init_fdata (
\return H5_SUCCESS or error code
*/
h5_err_t
_h5t_open_file (
h5tpriv_open_file (
h5_file_t * f /*!< IN: file handle */
) {
TRY( (f->t = _h5_alloc ( f, NULL, sizeof(*f->t) ) ) );
TRY( (f->t = h5priv_alloc ( f, NULL, sizeof(*f->t) ) ) );
h5t_fdata_t *t = f->t;
t->dtypes.h5_id_t = H5_INT64_T;
@@ -369,16 +370,16 @@ _h5t_open_file (
\return H5_SUCCESS or error code
*/
h5_err_t
_h5t_close_file (
h5tpriv_close_file (
h5_file_t *f /*!< IN: file handle */
) {
TRY ( _h5t_close_mesh ( f ) );
TRY ( h5tpriv_close_mesh ( f ) );
return H5_SUCCESS;
}
h5_err_t
_h5t_init_step (
h5tpriv_init_step (
h5_file_t * const f
) {
@@ -391,7 +392,7 @@ _h5t_init_step (
- free memory
*/
h5_err_t
_h5t_close_step (
h5tpriv_close_step (
h5_file_t * f
) {
@@ -400,42 +401,42 @@ _h5t_close_step (
h5_err_t
_h5t_open_topo_group (
h5tpriv_open_topo_group (
h5_file_t * const f
) {
struct h5t_fdata *t = f->t;
t->topo_gid = _h5_open_group ( f, f->root_gid, H5T_CONTAINER_GRPNAME );
t->topo_gid = h5priv_open_group ( f, f->root_gid, H5T_CONTAINER_GRPNAME );
return t->topo_gid;
}
h5_err_t
_h5t_open_meshes_group (
h5tpriv_open_meshes_group (
h5_file_t * const f
) {
h5t_fdata_t *t = f->t;
if ( t->topo_gid < 0 ) {
TRY ( _h5t_open_topo_group ( f ) );
TRY ( h5tpriv_open_topo_group ( f ) );
}
TRY ( (t->meshes_gid = _h5_open_group (
TRY ( (t->meshes_gid = h5priv_open_group (
f,
t->topo_gid,
_h5t_meshes_grpnames[t->mesh_type] ) ) );
h5tpriv_meshes_grpnames[t->mesh_type] ) ) );
return H5_SUCCESS;
}
h5_err_t
_h5t_open_mesh_group (
h5tpriv_open_mesh_group (
h5_file_t * const f
) {
h5t_fdata_t *t = f->t;
if ( t->meshes_gid < 0 ) {
TRY ( _h5t_open_meshes_group ( f ) );
TRY ( h5tpriv_open_meshes_group ( f ) );
}
TRY ( ( t->mesh_gid = _h5_open_group (
TRY ( ( t->mesh_gid = h5priv_open_group (
f,
t->meshes_gid,
t->mesh_name ) ) );
@@ -453,7 +454,7 @@ h5t_open_mesh (
) {
h5t_fdata_t *t = f->t;
TRY( _h5t_close_mesh ( f ) );
TRY( h5tpriv_close_mesh ( f ) );
if ( t->num_meshes < 0 ) {
h5_size_t result = h5t_get_num_meshes ( f, type );
@@ -481,12 +482,12 @@ h5t_open_mesh (
return h5_error_internal ( f, __FILE__, __func__, __LINE__ );
}
TRY( _h5t_open_mesh_group ( f ) );
TRY( h5tpriv_open_mesh_group ( f ) );
t->cur_mesh = id;
if ( id != t->num_meshes ) { /* open existing */
TRY ( _h5t_read_mesh ( f ) );
TRY ( h5tpriv_read_mesh ( f ) );
} else { /* append new */
t->num_meshes++;
@@ -503,11 +504,11 @@ _release_elems (
h5_file_t * const f
) {
h5t_fdata_t *t = f->t;
TRY ( _h5_free ( f, t->elems.data ) );
TRY( _h5_free ( f, t->num_elems ) );
TRY ( _h5_free ( f, t->elems_ldta ) );
TRY ( _h5_free ( f, t->num_elems_on_level ) );
TRY ( _h5_free ( f, t->map_elem_g2l.items ) );
TRY ( h5priv_free ( f, t->elems.data ) );
TRY( h5priv_free ( f, t->num_elems ) );
TRY ( h5priv_free ( f, t->elems_ldta ) );
TRY ( h5priv_free ( f, t->num_elems_on_level ) );
TRY ( h5priv_free ( f, t->map_elem_g2l.items ) );
return H5_SUCCESS;
}
@@ -517,31 +518,31 @@ _release_vertices (
h5_file_t * const f
) {
h5t_fdata_t *t = f->t;
TRY ( _h5_free ( f, t->vertices ) );
TRY ( _h5_free ( f, t->vertices_data ) );
TRY ( _h5_free ( f, t->num_vertices ) );
TRY ( _h5_free ( f, t->map_vertex_g2l.items ) );
TRY ( h5priv_free ( f, t->vertices ) );
TRY ( h5priv_free ( f, t->vertices_data ) );
TRY ( h5priv_free ( f, t->num_vertices ) );
TRY ( h5priv_free ( f, t->map_vertex_g2l.items ) );
return H5_SUCCESS;
}
static h5_err_t
_release_memory (
h5_file_t * const f
h5_file_t* const f
) {
TRY ( _h5t_release_tags ( f ) );
TRY ( _h5t_release_adjacencies ( f ) );
TRY ( _release_elems ( f ) );
TRY ( _release_vertices ( f ) );
TRY ( h5tpriv_release_tags (f) );
TRY ( (*f->t->methods.adjacency->release_internal_structs) (f) );
TRY ( _release_elems (f) );
TRY ( _release_vertices (f) );
return H5_SUCCESS;
}
h5_err_t
_h5t_close_mesh (
h5tpriv_close_mesh (
h5_file_t * const f
) {
TRY( _h5t_write_mesh ( f ) );
TRY( h5tpriv_write_mesh ( f ) );
TRY( _release_memory ( f ) );
TRY( _init_fdata ( f ) );
@@ -563,7 +564,7 @@ h5t_open_level (
}
herr_t
_hdf_set_chunk_property (
h5priv_set_hdf5_chunk_property (
h5_file_t * const f,
hid_t plist,
int ndims,
@@ -572,24 +573,24 @@ _hdf_set_chunk_property (
h5_err_t
_h5t_alloc_num_vertices (
h5tpriv_alloc_num_vertices (
h5_file_t * const f,
const h5_size_t num_vertices
) {
h5t_fdata_t *t = f->t;
ssize_t size = num_vertices * sizeof ( t->vertices[0] );
TRY ( t->vertices = _h5_alloc ( f, t->vertices, size ) );
TRY ( t->vertices = h5priv_alloc ( f, t->vertices, size ) );
size = num_vertices * sizeof ( t->vertices_data[0] );
TRY ( t->vertices_data = _h5_alloc ( f, t->vertices_data, size ) );
TRY( _h5_alloc_idmap ( f, &t->map_vertex_g2l, num_vertices ) );
TRY( _h5_alloc_idlist_items ( f, &t->sorted_lvertices, num_vertices ) );
TRY ( t->vertices_data = h5priv_alloc ( f, t->vertices_data, size ) );
TRY( h5priv_alloc_idmap ( f, &t->map_vertex_g2l, num_vertices ) );
TRY( h5priv_alloc_idlist_items ( f, &t->sorted_lvertices, num_vertices ) );
return H5_SUCCESS;
}
h5_err_t
_h5t_alloc_tris (
h5tpriv_alloc_tris (
h5_file_t * const f,
const size_t cur,
const size_t new
@@ -598,7 +599,7 @@ _h5t_alloc_tris (
const size_t nvertices = 3;
/* alloc mem for elements */
TRY ( t->elems.tris = _h5_alloc (
TRY ( t->elems.tris = h5priv_alloc (
f,
t->elems.tris,
new * sizeof(t->elems.tris[0]) ) );
@@ -608,7 +609,7 @@ _h5t_alloc_tris (
(new-cur) * sizeof(t->elems.tris[0]) );
/* alloc mem for local data of elements */
TRY ( t->elems_ldta = _h5_alloc (
TRY ( t->elems_ldta = h5priv_alloc (
f,
t->elems_ldta,
new * sizeof (t->elems_ldta[0]) ) );
@@ -618,7 +619,7 @@ _h5t_alloc_tris (
(new-cur) * sizeof (t->elems_ldta[0]) );
/* alloc mem for local vertex IDs of elements */
TRY ( t->elems_lvids = _h5_alloc (
TRY ( t->elems_lvids = h5priv_alloc (
f,
t->elems_lvids,
new * sizeof(t->elems_lvids[0]) * nvertices ) );
@@ -635,13 +636,13 @@ _h5t_alloc_tris (
}
/* alloc mem for global to local ID mapping */
TRY ( _h5_alloc_idmap ( f, &t->map_elem_g2l, new ) );
TRY ( h5priv_alloc_idmap ( f, &t->map_elem_g2l, new ) );
return H5_SUCCESS;
}
h5_err_t
_h5t_alloc_tets (
h5tpriv_alloc_tets (
h5_file_t * const f,
const size_t cur,
const size_t new
@@ -650,7 +651,7 @@ _h5t_alloc_tets (
const size_t nvertices = 4;
/* alloc mem for elements */
TRY ( t->elems.tets = _h5_alloc (
TRY ( t->elems.tets = h5priv_alloc (
f,
t->elems.tets,
new * sizeof(t->elems.tets[0]) ) );
@@ -660,7 +661,7 @@ _h5t_alloc_tets (
(new-cur) * sizeof(t->elems.tets[0]) );
/* alloc mem for local data of elements */
TRY ( t->elems_ldta = _h5_alloc (
TRY ( t->elems_ldta = h5priv_alloc (
f,
t->elems_ldta,
new * sizeof (t->elems_ldta[0]) ) );
@@ -670,7 +671,7 @@ _h5t_alloc_tets (
(new-cur) * sizeof (t->elems_ldta[0]) );
/* alloc mem for local vertex IDs of elements */
TRY ( t->elems_lvids = _h5_alloc (
TRY ( t->elems_lvids = h5priv_alloc (
f,
t->elems_lvids,
new * sizeof(t->elems_lvids[0]) * nvertices ) );
@@ -687,7 +688,7 @@ _h5t_alloc_tets (
}
/* alloc mem for global to local ID mapping */
TRY ( _h5_alloc_idmap ( f, &t->map_elem_g2l, new ) );
TRY ( h5priv_alloc_idmap ( f, &t->map_elem_g2l, new ) );
return H5_SUCCESS;
}
+12 -12
View File
@@ -6,22 +6,22 @@ h5_err_t h5t_open_mesh ( h5_file_t * const f, const h5_id_t id,
const h5_oid_t type );
h5_err_t h5t_open_level ( h5_file_t * const f, const h5_id_t id );
h5_err_t _h5t_open_file ( h5_file_t * const f );
h5_err_t _h5t_close_file ( h5_file_t * const f );
h5_err_t _h5t_open_topo_group ( h5_file_t * const f );
h5_err_t _h5t_open_meshes_group ( h5_file_t * const f );
h5_err_t _h5t_open_mesh_group ( h5_file_t * const f );
h5_err_t _h5t_close_mesh ( h5_file_t * const f );
h5_err_t _h5t_close_step ( h5_file_t * const f );
h5_err_t h5tpriv_open_file ( h5_file_t * const f );
h5_err_t h5tpriv_close_file ( h5_file_t * const f );
h5_err_t h5tpriv_open_topo_group ( h5_file_t * const f );
h5_err_t h5tpriv_open_meshes_group ( h5_file_t * const f );
h5_err_t h5tpriv_open_mesh_group ( h5_file_t * const f );
h5_err_t h5tpriv_close_mesh ( h5_file_t * const f );
h5_err_t h5tpriv_close_step ( h5_file_t * const f );
h5_err_t _h5t_init_fdata ( h5_file_t * const f );
h5_err_t _h5t_init_step ( h5_file_t * const f );
h5_err_t h5tpriv_init_fdata ( h5_file_t * const f );
h5_err_t h5tpriv_init_step ( h5_file_t * const f );
h5_err_t _h5t_alloc_num_vertices ( h5_file_t * const f,
h5_err_t h5tpriv_alloc_num_vertices ( h5_file_t * const f,
const h5_size_t num_vertices );
h5_err_t _h5t_alloc_tris ( h5_file_t * const f, const size_t cur,
h5_err_t h5tpriv_alloc_tris ( h5_file_t * const f, const size_t cur,
const size_t new_size );
h5_err_t _h5t_alloc_tets ( h5_file_t * const f, const size_t cur,
h5_err_t h5tpriv_alloc_tets ( h5_file_t * const f, const size_t cur,
const size_t new_size );
#endif
+35 -35
View File
@@ -34,17 +34,17 @@ _write_vertices (
if ( t->num_vertices <= 0 ) return H5_SUCCESS; /* ???? */
if ( t->mesh_gid < 0 ) {
TRY( _h5t_open_mesh_group ( f ) );
TRY( h5tpriv_open_mesh_group ( f ) );
}
t->dsinfo_vertices.dims[0] = t->num_vertices[t->cur_level];
TRY( _h5_write_dataset_by_name (
TRY( h5priv_write_dataset_by_name (
f,
t->mesh_gid,
&t->dsinfo_vertices,
_open_space_all,
_open_space_all,
t->vertices ) );
TRY( _h5_write_dataset_by_name (
TRY( h5priv_write_dataset_by_name (
f,
t->mesh_gid,
&t->dsinfo_num_vertices,
@@ -64,10 +64,10 @@ _write_elems (
if ( t->num_elems <= 0 ) return H5_SUCCESS;
if ( t->mesh_gid < 0 ) {
TRY( _h5t_open_mesh_group ( f ) );
TRY( h5tpriv_open_mesh_group ( f ) );
}
TRY ( _h5_write_dataset_by_name (
TRY ( h5priv_write_dataset_by_name (
f,
t->mesh_gid,
&t->dsinfo_elems,
@@ -75,7 +75,7 @@ _write_elems (
_open_space_all,
t->elems.data ) );
TRY ( _h5_write_dataset_by_name (
TRY ( h5priv_write_dataset_by_name (
f,
t->mesh_gid,
&t->dsinfo_num_elems,
@@ -83,7 +83,7 @@ _write_elems (
_open_space_all,
t->num_elems ) );
TRY ( _h5_write_dataset_by_name (
TRY ( h5priv_write_dataset_by_name (
f,
t->mesh_gid,
&t->dsinfo_num_elems_on_level,
@@ -95,7 +95,7 @@ _write_elems (
}
h5_err_t
_h5t_write_mesh (
h5tpriv_write_mesh (
h5_file_t * f
) {
h5t_fdata_t *t = f->t;
@@ -104,7 +104,7 @@ _h5t_write_mesh (
TRY( _write_elems( f ) );
}
if ( t->mtags.changed ) {
TRY ( _h5t_write_mtags ( f ) );
TRY ( h5tpriv_write_mtags ( f ) );
}
return H5_SUCCESS;
@@ -120,12 +120,12 @@ _read_num_levels (
hssize_t size;
if ( t->cur_mesh < 0 ) {
return _h5t_error_undef_mesh ( f );
return h5tpriv_error_undef_mesh ( f );
}
TRY ( dataset_id = _hdf_open_dataset ( f, t->mesh_gid, "NumVertices" ) );
TRY ( diskspace_id = _hdf_get_dataset_space ( f, dataset_id ) );
TRY ( size = _hdf_get_npoints_of_dataspace ( f, diskspace_id ) );
TRY ( _hdf_close_dataspace( f, diskspace_id ) );
TRY ( dataset_id = h5priv_open_hdf5_dataset ( f, t->mesh_gid, "NumVertices" ) );
TRY ( diskspace_id = h5priv_get_hdf5_dataset_space ( f, dataset_id ) );
TRY ( size = h5priv_get_npoints_of_hdf5_dataspace ( f, diskspace_id ) );
TRY ( h5priv_close_hdf5_dataspace( f, diskspace_id ) );
t->num_levels = size;
return size;
@@ -155,11 +155,11 @@ _read_num_vertices (
struct h5t_fdata *t = f->t;
if ( t->mesh_gid < 0 ) {
TRY ( _h5t_open_mesh_group ( f ) );
TRY ( h5tpriv_open_mesh_group ( f ) );
}
ssize_t num_bytes = t->num_levels*sizeof ( t->num_vertices[0] );
TRY ( t->num_vertices = _h5_alloc ( f, t->num_vertices, num_bytes ) );
TRY ( _h5_read_dataset_by_name (
TRY ( t->num_vertices = h5priv_alloc ( f, t->num_vertices, num_bytes ) );
TRY ( h5priv_read_dataset_by_name (
f,
t->mesh_gid,
&t->dsinfo_num_vertices,
@@ -177,16 +177,16 @@ _read_vertices (
struct h5t_fdata *t = f->t;
TRY( _h5t_alloc_num_vertices ( f, t->num_vertices[t->num_levels-1] ) );
TRY( _h5_read_dataset_by_name (
TRY( h5tpriv_alloc_num_vertices ( f, t->num_vertices[t->num_levels-1] ) );
TRY( h5priv_read_dataset_by_name (
f,
t->mesh_gid,
&t->dsinfo_vertices,
_open_mem_space_vertices,
_open_file_space_vertices,
t->vertices ) );
TRY ( _h5t_sort_vertices ( f ) );
TRY ( _h5t_rebuild_global_2_local_map_of_vertices ( f ) );
TRY ( h5tpriv_sort_vertices ( f ) );
TRY ( h5tpriv_rebuild_global_2_local_map_of_vertices ( f ) );
return H5_SUCCESS;
}
@@ -200,12 +200,12 @@ _read_num_elems (
struct h5t_fdata *t = f->t;
if ( t->mesh_gid < 0 ) {
TRY( _h5t_open_mesh_group ( f ) );
TRY( h5tpriv_open_mesh_group ( f ) );
}
size_t size = t->num_levels * sizeof ( t->num_elems[0] );
TRY( t->num_elems = _h5_alloc ( f, NULL, size ) );
TRY( t->num_elems_on_level = _h5_alloc ( f, NULL, size ) );
TRY( _h5_read_dataset_by_name (
TRY( t->num_elems = h5priv_alloc ( f, NULL, size ) );
TRY( t->num_elems_on_level = h5priv_alloc ( f, NULL, size ) );
TRY( h5priv_read_dataset_by_name (
f,
t->mesh_gid,
&t->dsinfo_num_elems,
@@ -213,7 +213,7 @@ _read_num_elems (
_open_space_all,
t->num_elems ) );
TRY( _h5_read_dataset_by_name (
TRY( h5priv_read_dataset_by_name (
f,
t->mesh_gid,
&t->dsinfo_num_elems_on_level,
@@ -262,7 +262,7 @@ _build_elems_ldta (
for ( local_eid=0;
local_eid < num_elems;
local_eid++, elp+=_h5t_sizeof_elem[t->mesh_type], el_data++ ) {
local_eid++, elp+=h5tpriv_sizeof_elem[t->mesh_type], el_data++ ) {
el = (h5_elem_t*)elp;
TRY( h5t_map_global_vids2local (
f,
@@ -297,7 +297,7 @@ _read_elems (
h5t_fdata_t *t = f->t;
TRY( (*t->methods._alloc_elems)( f, 0, t->num_elems[t->num_levels-1] ) );
TRY( _h5_read_dataset_by_name (
TRY( h5priv_read_dataset_by_name (
f,
t->mesh_gid,
&t->dsinfo_elems,
@@ -305,11 +305,11 @@ _read_elems (
_open_file_space_elems,
t->elems.data ) );
TRY ( _h5t_sort_elems ( f ) );
TRY ( _h5t_rebuild_global_2_local_map_of_elems ( f ) );
TRY ( h5tpriv_sort_elems ( f ) );
TRY ( h5tpriv_rebuild_global_2_local_map_of_elems ( f ) );
TRY ( _build_elems_ldta ( f ) );
TRY ( _h5t_rebuild_adj_data ( f ) );
TRY ( (*t->methods.adjacency->rebuild_internal_structs)( f ) );
return H5_SUCCESS;
}
@@ -318,16 +318,16 @@ _read_mtags (
h5_file_t *const f
) {
h5t_fdata_t *t = f->t;
TRY ( t->mtags.group_id = _h5_open_group ( f, t->mesh_gid, "Tags" ) );
return _h5t_read_tag_container ( f, &f->t->mtags );
TRY ( t->mtags.group_id = h5priv_open_group ( f, t->mesh_gid, "Tags" ) );
return h5tpriv_read_tag_container ( f, &f->t->mtags );
}
h5_err_t
_h5t_read_mesh (
h5tpriv_read_mesh (
h5_file_t *f
) {
if ( f->t->mesh_gid < 0 ) {
TRY( _h5t_open_mesh_group ( f ) );
TRY( h5tpriv_open_mesh_group ( f ) );
}
TRY ( _read_num_levels ( f ) );
TRY ( _read_num_vertices ( f ) );
+3 -3
View File
@@ -2,7 +2,7 @@
#define __H5T_READWRITE_PRIVATE_H
h5_err_t
_h5t_write_obj (
h5tpriv_write_obj (
h5_file_t * f,
const hid_t gid,
const hsize_t current_dims,
@@ -13,12 +13,12 @@ _h5t_write_obj (
);
h5_err_t
_h5t_read_mesh (
h5tpriv_read_mesh (
h5_file_t * const f
);
h5_err_t
_h5t_write_mesh (
h5tpriv_write_mesh (
h5_file_t * const f
);
+16 -16
View File
@@ -27,7 +27,7 @@ _skip_to_next_elem_on_level (
f, __FILE__, __func__, __LINE__ );
}
el_dta = &t->elems_ldta[*eid];
} while ( _h5t_elem_is_on_cur_level ( f, el_dta ) == H5_NOK );
} while ( h5tpriv_elem_is_on_cur_level ( f, el_dta ) == H5_NOK );
return *eid;
}
@@ -37,7 +37,7 @@ _skip_to_next_elem_on_level (
- and, if any, the direct children is on a level > the current level
*/
h5_err_t
_h5t_elem_is_on_cur_level (
h5tpriv_elem_is_on_cur_level (
h5_file_t * const f,
h5_elem_ldta_t *el_dta
) {
@@ -84,22 +84,22 @@ h5t_traverse_vertices (
} else {
iter->cur_cid++;
}
TRY ( _h5t_find_tv2 ( f, iter->cur_cid, iter->cur_eid, &tv ) );
TRY ( h5tpriv_find_tv2 ( f, iter->cur_cid, iter->cur_eid, &tv ) );
/* skip to first element which is on current level */
i = -1;
h5_elem_ldta_t *el_dta;
do {
i++;
h5_id_t eid = _h5t_get_elem_idx ( tv->items[i] );
h5_id_t eid = h5tpriv_get_elem_idx ( tv->items[i] );
el_dta = &t->elems_ldta[eid];
} while ( _h5t_elem_is_on_cur_level ( f, el_dta ) == H5_NOK );
} while ( iter->cur_eid != _h5t_get_elem_idx(tv->items[i]) );
} while ( h5tpriv_elem_is_on_cur_level ( f, el_dta ) == H5_NOK );
} while ( iter->cur_eid != h5tpriv_get_elem_idx(tv->items[i]) );
h5_id_t vidx = t->elems_ldta[iter->cur_eid].local_vids[iter->cur_cid];
h5_vertex_t *vertex = &t->vertices[vidx];
memcpy ( P, &vertex->P, sizeof ( vertex->P ) );
return _h5t_build_vertex_id ( iter->cur_cid, iter->cur_eid );
return h5tpriv_build_vertex_id ( iter->cur_cid, iter->cur_eid );
}
h5_err_t
@@ -148,17 +148,17 @@ h5t_traverse_edges (
} else {
iter->cur_cid++;
}
TRY ( _h5t_find_te2 (
TRY ( h5tpriv_find_te2 (
f, iter->cur_cid, iter->cur_eid, &te ) );
/* skip to first element which is on current level */
i = -1;
h5_elem_ldta_t *el_dta;
do {
i++;
h5_id_t eid = _h5t_get_elem_idx ( te->value.items[i] );
h5_id_t eid = h5tpriv_get_elem_idx ( te->value.items[i] );
el_dta = &t->elems_ldta[eid];
} while ( _h5t_elem_is_on_cur_level ( f, el_dta ) == H5_NOK );
} while ( iter->cur_eid != _h5t_get_elem_idx(te->value.items[i]) );
} while ( h5tpriv_elem_is_on_cur_level ( f, el_dta ) == H5_NOK );
} while ( iter->cur_eid != h5tpriv_get_elem_idx(te->value.items[i]) );
memcpy ( local_vids, te->key.vids, 2*sizeof(h5_id_t) );
return te->value.items[0];
@@ -210,16 +210,16 @@ h5t_traverse_triangles (
} else {
iter->cur_cid++;
}
TRY ( _h5t_find_td2 ( f, iter->cur_cid, iter->cur_eid, &td ) );
TRY ( h5tpriv_find_td2 ( f, iter->cur_cid, iter->cur_eid, &td ) );
/* skip to first element which is on current level */
i = -1;
h5_elem_ldta_t *el_dta;
do {
i++;
h5_id_t eid = _h5t_get_elem_idx ( td->value.items[i] );
h5_id_t eid = h5tpriv_get_elem_idx ( td->value.items[i] );
el_dta = &t->elems_ldta[eid];
} while ( _h5t_elem_is_on_cur_level ( f, el_dta ) == H5_NOK );
} while ( iter->cur_eid != _h5t_get_elem_idx(td->value.items[i]) );
} while ( h5tpriv_elem_is_on_cur_level ( f, el_dta ) == H5_NOK );
} while ( iter->cur_eid != h5tpriv_get_elem_idx(td->value.items[i]) );
memcpy ( local_vids, td->key.vids, 3*sizeof(h5_id_t) );
return td->value.items[0];
@@ -287,7 +287,7 @@ h5t_traverse_elems (
elem_data->local_vids,
sizeof ( elem_data->local_vids[0] ) * t->mesh_type );
return _h5t_build_elem_id ( iter->cur_eid );
return h5tpriv_build_elem_id ( iter->cur_eid );
}
h5_err_t
+1 -1
View File
@@ -2,7 +2,7 @@
#define __H5T_RETRIEVE_PRIVATE_H
h5_err_t
_h5t_elem_is_on_cur_level (
h5tpriv_elem_is_on_cur_level (
h5_file_t * const f,
h5_elem_ldta_t *el_dta
);
+59 -57
View File
@@ -33,7 +33,7 @@ h5t_add_mesh (
* Set the global vertex id's in element definitions.
*/
h5_err_t
_h5t_assign_global_vertex_ids (
h5tpriv_assign_global_vertex_ids (
h5_file_t * const f
) {
h5t_fdata_t *t = f->t;
@@ -68,9 +68,9 @@ _assign_global_elem_ids (
/*
simple in serial runs: global_id = local_id
*/
for ( local_eid = (t->cur_level == 0) ? 0 : t->num_elems[t->cur_level-1];
for (local_eid = (t->cur_level == 0) ? 0 : t->num_elems[t->cur_level-1];
local_eid < t->num_elems[t->cur_level];
local_eid++ ) {
local_eid++) {
h5_elem_t *elem;
h5_elem_ldta_t *elem_ldta = &t->elems_ldta[local_eid];
switch ( t->mesh_type ) {
@@ -119,12 +119,12 @@ h5t_add_level (
t->dsinfo_num_elems_on_level.dims[0] = t->num_levels;
ssize_t num_bytes = t->num_levels*sizeof ( h5_size_t );
TRY ( t->num_vertices = _h5_alloc ( f, t->num_vertices, num_bytes ) );
TRY ( t->num_vertices = h5priv_alloc ( f, t->num_vertices, num_bytes ) );
t->num_vertices[t->cur_level] = -1;
TRY ( t->num_elems = _h5_alloc ( f, t->num_elems, num_bytes ) );
TRY ( t->num_elems = h5priv_alloc ( f, t->num_elems, num_bytes ) );
t->num_elems[t->cur_level] = -1;
TRY ( t->num_elems_on_level = _h5_alloc (
TRY ( t->num_elems_on_level = h5priv_alloc (
f, t->num_elems_on_level, num_bytes ) );
t->num_elems_on_level[t->cur_level] = -1;
@@ -149,14 +149,14 @@ h5t_begin_store_vertices (
h5t_fdata_t *t = f->t;
if ( t->cur_level < 0 ) {
return _h5t_error_undef_level( f );
return h5tpriv_error_undef_level( f );
}
t->storing_data = 1;
h5_size_t cur_num_vertices = ( t->cur_level > 0 ?
t->num_vertices[t->cur_level-1] : 0 );
t->num_vertices[t->cur_level] = cur_num_vertices+num;
t->dsinfo_vertices.dims[0] = cur_num_vertices+num;
return _h5t_alloc_num_vertices ( f, cur_num_vertices+num );
return h5tpriv_alloc_num_vertices ( f, cur_num_vertices+num );
}
h5_id_t
@@ -178,7 +178,7 @@ h5t_store_vertex (
missing call to add the first level
*/
if ( t->cur_level < 0 )
return _h5t_error_undef_level( f );
return h5tpriv_error_undef_level( f );
t->level_changed = 1;
h5_id_t local_id = ++t->last_stored_vid;
@@ -196,9 +196,9 @@ h5t_end_store_vertices (
t->storing_data = 0;
t->num_vertices[t->cur_level] = t->last_stored_vid+1;
TRY ( _h5t_assign_global_vertex_ids ( f ) );
TRY ( _h5t_sort_vertices ( f ) );
TRY ( _h5t_rebuild_global_2_local_map_of_vertices ( f ) );
TRY ( h5tpriv_assign_global_vertex_ids ( f ) );
TRY ( h5tpriv_sort_vertices ( f ) );
TRY ( h5tpriv_rebuild_global_2_local_map_of_vertices ( f ) );
return H5_SUCCESS;
}
@@ -228,7 +228,7 @@ h5t_begin_store_elems (
prevent resizing.
*/
size_t nel = 2097152 > 5*new ? 2097152 : 5*new;
TRY ( _h5t_resize_te_htab ( f, nel ) );
TRY ( h5tpriv_resize_te_htab ( f, nel ) );
return (*t->methods._alloc_elems) ( f, cur, new );
}
@@ -247,12 +247,12 @@ h5t_store_elem (
/* level set? */
if ( t->cur_level < 0 )
return _h5t_error_undef_level( f );
return h5tpriv_error_undef_level( f );
/* more than allocated? */
if ( t->last_stored_eid+1 >= t->num_elems[t->cur_level] )
return HANDLE_H5_OVERFLOW_ERR(
f, _h5t_map_oid2str(t->mesh_type),
f, h5tpriv_map_oid2str(t->mesh_type),
t->num_elems[t->cur_level] );
/* check parent id */
@@ -264,7 +264,7 @@ h5t_store_elem (
) {
return HANDLE_H5_PARENT_ID_ERR (
f,
_h5t_map_oid2str(t->mesh_type),
h5tpriv_map_oid2str(t->mesh_type),
local_parent_eid );
}
@@ -279,7 +279,7 @@ h5t_store_elem (
\param[in] local_vids Local vertex id's defining the tetrahedron.
*/
h5_id_t
_h5t_store_tet (
h5tpriv_store_tet (
h5_file_t * const f,
const h5_id_t local_parent_eid,
const h5_id_t *local_vids
@@ -295,11 +295,11 @@ _h5t_store_tet (
elem_ldta->level_id = t->cur_level;
memcpy ( elem_ldta->local_vids, local_vids,
sizeof (*local_vids) * t->mesh_type );
_h5t_sort_local_vids ( f, elem_ldta->local_vids, t->mesh_type );
h5tpriv_sort_local_vids ( f, elem_ldta->local_vids, t->mesh_type );
h5_id_t face_id;
h5t_te_entry_t *retval;
for ( face_id = 0; face_id < 6; face_id++ ) {
TRY ( _h5t_search_te2 (
TRY ( h5tpriv_search_te2 (
f,
face_id,
local_eid,
@@ -309,7 +309,7 @@ _h5t_store_tet (
}
h5_id_t
_h5t_store_tri (
h5tpriv_store_tri (
h5_file_t * const f,
const h5_id_t local_parent_eid,
const h5_id_t *local_vids
@@ -325,11 +325,11 @@ _h5t_store_tri (
elem_ldta->level_id = t->cur_level;
memcpy ( elem_ldta->local_vids, local_vids,
sizeof (*local_vids) * t->mesh_type );
_h5t_sort_local_vids ( f, elem_ldta->local_vids, t->mesh_type );
h5tpriv_sort_local_vids ( f, elem_ldta->local_vids, t->mesh_type );
h5_id_t face_id;
h5t_te_entry_t *retval;
for ( face_id = 0; face_id < 3; face_id++ ) {
TRY ( _h5t_search_te2 (
TRY ( h5tpriv_search_te2 (
f,
face_id,
local_eid,
@@ -348,8 +348,8 @@ h5t_end_store_elems (
t->num_elems[t->cur_level] = t->last_stored_eid+1;
TRY ( _assign_global_elem_ids ( f ) );
TRY ( _h5t_sort_elems ( f ) );
TRY ( _h5t_rebuild_global_2_local_map_of_elems ( f ) );
TRY ( h5tpriv_sort_elems ( f ) );
TRY ( h5tpriv_rebuild_global_2_local_map_of_elems ( f ) );
return H5_SUCCESS;
}
@@ -404,10 +404,12 @@ h5t_end_refine_elems (
/*!
Refine edge. Store vertex, if new.
Function can be used with tetrahedral and triangle meshes.
\return local id of vertex
*/
h5_id_t
_h5t_bisect_edge (
h5tpriv_bisect_edge (
h5_file_t * const f,
h5_id_t face_id,
h5_id_t el_id
@@ -420,23 +422,23 @@ _h5t_bisect_edge (
get all elements sharing the given edge
*/
TRY ( h5t_get_local_vids_of_edge2 ( f, face_id, el_id, vids ) );
TRY ( _h5t_find_te ( f, &item, &retval ) );
TRY ( h5tpriv_find_te ( f, &item, &retval ) );
/*
check wether one of these elements has been refined
check wether one of the found elements has been refined
*/
size_t i;
for ( i = 0; i < retval->value.num_items; i++ ) {
h5_id_t local_id = _h5t_get_elem_idx ( retval->value.items[i] );
h5_id_t local_id = h5tpriv_get_elem_idx ( retval->value.items[i] );
h5_elem_ldta_t *tet = &t->elems_ldta[local_id];
if ( tet->local_child_eid >= 0 ) {
/*
this element has been refined!
return bisecting point
*/
h5_id_t face_id = _h5t_get_face_id (
h5_id_t face_id = h5tpriv_get_face_id (
retval->value.items[i] );
h5_id_t kids[2], edge0[2], edge1[2];
TRY ( _h5t_compute_direct_children_of_edge (
TRY ( h5tpriv_compute_direct_children_of_edge (
f,
face_id,
tet->local_child_eid,
@@ -466,7 +468,7 @@ _h5t_bisect_edge (
/*!
Refine element \c local_eid
\return Local id of first new element or \c -1
\return local id of first new element or \c -1
*/
h5_id_t
h5t_refine_elem (
@@ -483,7 +485,7 @@ h5t_refine_elem (
\return Local id of first new triangle or \c -1
*/
h5_id_t
_h5t_refine_tri (
h5tpriv_refine_tri (
h5_file_t * const f,
const h5_id_t local_eid
) {
@@ -503,9 +505,9 @@ _h5t_refine_tri (
local_vids[1] = el->local_vids[1];
local_vids[2] = el->local_vids[2];
local_vids[3] = _h5t_bisect_edge( f, 0, local_eid ); /* 1,2 */
local_vids[4] = _h5t_bisect_edge( f, 1, local_eid ); /* 0,2 */
local_vids[5] = _h5t_bisect_edge( f, 2, local_eid ); /* 0,1 */
local_vids[3] = h5tpriv_bisect_edge( f, 0, local_eid ); /* 1,2 */
local_vids[4] = h5tpriv_bisect_edge( f, 1, local_eid ); /* 0,2 */
local_vids[5] = h5tpriv_bisect_edge( f, 2, local_eid ); /* 0,1 */
h5_id_t new_el[3];
@@ -513,25 +515,25 @@ _h5t_refine_tri (
new_el[0] = local_vids[0];
new_el[1] = local_vids[4];
new_el[2] = local_vids[5];
TRY ( local_child_eid = _h5t_store_tri ( f, local_eid, new_el ) );
TRY ( local_child_eid = h5tpriv_store_tri ( f, local_eid, new_el ) );
/* 1 */
new_el[0] = local_vids[1];
new_el[1] = local_vids[3];
new_el[2] = local_vids[5];
TRY ( _h5t_store_tri ( f, local_eid, new_el ) );
TRY ( h5tpriv_store_tri ( f, local_eid, new_el ) );
/* 2 */
new_el[0] = local_vids[2];
new_el[1] = local_vids[3];
new_el[2] = local_vids[4];
TRY ( _h5t_store_tri ( f, local_eid, new_el ) );
TRY ( h5tpriv_store_tri ( f, local_eid, new_el ) );
/* 3 */
new_el[0] = local_vids[3];
new_el[1] = local_vids[4];
new_el[2] = local_vids[5];
TRY ( _h5t_store_tri ( f, local_eid, new_el ) );
TRY ( h5tpriv_store_tri ( f, local_eid, new_el ) );
return local_child_eid;
}
@@ -544,7 +546,7 @@ _h5t_refine_tri (
*/
h5_err_t
_h5t_compute_direct_children_of_edge (
h5tpriv_compute_direct_children_of_edge (
h5_file_t * const f,
h5_id_t face_id,
h5_id_t local_eid,
@@ -555,8 +557,8 @@ _h5t_compute_direct_children_of_edge (
if ( ( face_id < 0 ) || ( face_id >= 6 ) ) {
return h5_error_internal ( f, __FILE__, __func__, __LINE__ );
}
kids[0] = _h5t_build_edge_id ( face_id, local_eid+off[face_id][0] );
kids[1] = _h5t_build_edge_id ( face_id, local_eid+off[face_id][1] );
kids[0] = h5tpriv_build_edge_id ( face_id, local_eid+off[face_id][0] );
kids[1] = h5tpriv_build_edge_id ( face_id, local_eid+off[face_id][1] );
return H5_SUCCESS;
}
@@ -567,7 +569,7 @@ _h5t_compute_direct_children_of_edge (
\return Local id of first new tetrahedron or \c -1
*/
h5_id_t
_h5t_refine_tet (
h5tpriv_refine_tet (
h5_file_t * const f,
const h5_id_t local_eid
) {
@@ -587,12 +589,12 @@ _h5t_refine_tet (
local_vids[2] = tet->local_vids[2];
local_vids[3] = tet->local_vids[3];
local_vids[4] = _h5t_bisect_edge( f, 0, local_eid );
local_vids[5] = _h5t_bisect_edge( f, 2, local_eid );
local_vids[6] = _h5t_bisect_edge( f, 3, local_eid );
local_vids[7] = _h5t_bisect_edge( f, 1, local_eid );
local_vids[8] = _h5t_bisect_edge( f, 4, local_eid );
local_vids[9] = _h5t_bisect_edge( f, 5, local_eid );
local_vids[4] = h5tpriv_bisect_edge( f, 0, local_eid );
local_vids[5] = h5tpriv_bisect_edge( f, 2, local_eid );
local_vids[6] = h5tpriv_bisect_edge( f, 3, local_eid );
local_vids[7] = h5tpriv_bisect_edge( f, 1, local_eid );
local_vids[8] = h5tpriv_bisect_edge( f, 4, local_eid );
local_vids[9] = h5tpriv_bisect_edge( f, 5, local_eid );
/*
add new tets
@@ -604,7 +606,7 @@ _h5t_refine_tet (
new_tet_local_vids[1] = local_vids[6]; // (03)
new_tet_local_vids[2] = local_vids[5]; // (02)
new_tet_local_vids[3] = local_vids[4]; // (01)
TRY ( local_child_eid = _h5t_store_tet (
TRY ( local_child_eid = h5tpriv_store_tet (
f, local_eid, new_tet_local_vids ) );
/* 1 */
@@ -612,49 +614,49 @@ _h5t_refine_tet (
new_tet_local_vids[1] = local_vids[8]; // (13)
new_tet_local_vids[2] = local_vids[7]; // (12)
new_tet_local_vids[3] = local_vids[1];
TRY ( _h5t_store_tet ( f, local_eid, new_tet_local_vids ) );
TRY ( h5tpriv_store_tet ( f, local_eid, new_tet_local_vids ) );
/* 2 */
new_tet_local_vids[0] = local_vids[5]; // (02)
new_tet_local_vids[1] = local_vids[9]; // (23)
new_tet_local_vids[2] = local_vids[2];
new_tet_local_vids[3] = local_vids[7]; // (12)
TRY ( _h5t_store_tet ( f, local_eid, new_tet_local_vids ) );
TRY ( h5tpriv_store_tet ( f, local_eid, new_tet_local_vids ) );
/* 3 */
new_tet_local_vids[0] = local_vids[6]; // (03)
new_tet_local_vids[1] = local_vids[3];
new_tet_local_vids[2] = local_vids[9]; // (23)
new_tet_local_vids[3] = local_vids[8]; // (13)
TRY ( _h5t_store_tet ( f, local_eid, new_tet_local_vids ) );
TRY ( h5tpriv_store_tet ( f, local_eid, new_tet_local_vids ) );
/* 4 */
new_tet_local_vids[0] = local_vids[6]; // (03)
new_tet_local_vids[1] = local_vids[5]; // (02)
new_tet_local_vids[2] = local_vids[4]; // (01)
new_tet_local_vids[3] = local_vids[8]; // (13)
TRY ( _h5t_store_tet ( f, local_eid, new_tet_local_vids ) );
TRY ( h5tpriv_store_tet ( f, local_eid, new_tet_local_vids ) );
/* 5 */
new_tet_local_vids[0] = local_vids[5]; // (02)
new_tet_local_vids[1] = local_vids[4]; // (01)
new_tet_local_vids[2] = local_vids[8]; // (13)
new_tet_local_vids[3] = local_vids[7]; // (12)
TRY ( _h5t_store_tet ( f, local_eid, new_tet_local_vids ) );
TRY ( h5tpriv_store_tet ( f, local_eid, new_tet_local_vids ) );
/* 6 */
new_tet_local_vids[0] = local_vids[6]; // (03)
new_tet_local_vids[1] = local_vids[5]; // (02)
new_tet_local_vids[2] = local_vids[9]; // (23)
new_tet_local_vids[3] = local_vids[8]; // (13)
TRY ( _h5t_store_tet ( f, local_eid, new_tet_local_vids ) );
TRY ( h5tpriv_store_tet ( f, local_eid, new_tet_local_vids ) );
/* 7 */
new_tet_local_vids[0] = local_vids[5]; // (02)
new_tet_local_vids[1] = local_vids[9]; // (23)
new_tet_local_vids[2] = local_vids[8]; // (13)
new_tet_local_vids[3] = local_vids[7]; // (12)
TRY ( _h5t_store_tet ( f, local_eid, new_tet_local_vids ) );
TRY ( h5tpriv_store_tet ( f, local_eid, new_tet_local_vids ) );
t->elems.tets[local_eid].global_child_eid = local_child_eid;
t->elems_ldta[local_eid].local_child_eid = local_child_eid;
+5 -5
View File
@@ -2,21 +2,21 @@
#define __H5T_STOREMESH_PRIVATE_H
h5_id_t
_h5t_store_tri (
h5tpriv_store_tri (
h5_file_t * const f,
const h5_id_t local_parent_eid,
const h5_id_t vids[]
);
h5_id_t
_h5t_store_tet (
h5tpriv_store_tet (
h5_file_t * const f,
const h5_id_t local_parent_eid,
const h5_id_t vids[]
);
h5_err_t
_h5t_compute_direct_children_of_edge (
h5tpriv_compute_direct_children_of_edge (
h5_file_t * const f,
h5_id_t face_id,
h5_id_t local_eid,
@@ -24,13 +24,13 @@ _h5t_compute_direct_children_of_edge (
);
h5_id_t
_h5t_refine_tri (
h5tpriv_refine_tri (
h5_file_t * const f,
const h5_id_t local_eid
);
h5_id_t
_h5t_refine_tet (
h5tpriv_refine_tet (
h5_file_t * const f,
const h5_id_t local_eid
);
+319 -167
View File
@@ -18,17 +18,17 @@ static h5_err_t
_init_container (
h5_file_t * const f,
const size_t ntags,
h5t_tagcontainer_t * container
h5t_tagcontainer_t * ctn
) {
container->names = _h5_calloc ( f, ntags, sizeof(char*) );
TRY ( _h5_hcreate_string_keyed ( f, ntags, &container->sets ) );
ctn->names = h5priv_calloc ( f, ntags, sizeof(char*) );
TRY ( h5priv_hcreate_string_keyed ( f, ntags, &ctn->sets ) );
return H5_SUCCESS;
}
/*
Initialize tag container for current mesh and level.
*/
h5_err_t
_h5t_init_mtagsets (
h5tpriv_init_mtagsets (
h5_file_t * const f,
size_t ntags
) {
@@ -45,7 +45,7 @@ _release_tagvals_of_elem (
) {
unsigned int i = 0;
for ( i = 0; i < el_vals->size; i++ ) {
TRY ( _h5_free ( f, el_vals->valp[i] ) );
TRY ( h5priv_free ( f, el_vals->valp[i] ) );
}
return H5_SUCCESS;
}
@@ -58,15 +58,15 @@ _release_tagset (
h5_file_t * const f,
const void *__set
) {
h5t_tagset_t *set = *(h5t_tagset_t**)__set;
H5T_Tagset *set = *(H5T_Tagset**)__set;
unsigned int i;
for ( i = 0; i < set->num_elems; i++ ) {
if ( set->elems[i] != NULL ) {
TRY ( _release_tagvals_of_elem ( f, set->elems[i] ) );
}
}
TRY ( _h5_free ( f, set->name ) );
TRY ( _h5_free ( f, set ) );
TRY ( h5priv_free ( f, set->name ) );
TRY ( h5priv_free ( f, set ) );
return H5_SUCCESS;
}
@@ -76,10 +76,10 @@ _release_tagset (
static h5_err_t
_release_container (
h5_file_t * const f,
h5t_tagcontainer_t * container
h5t_tagcontainer_t * ctn
) {
TRY ( _h5_hwalk ( f, &container->sets, _release_tagset ) );
TRY ( _h5_free ( f, container->names ) );
TRY ( h5priv_hwalk ( f, &ctn->sets, _release_tagset ) );
TRY ( h5priv_free ( f, ctn->names ) );
return H5_SUCCESS;
}
@@ -88,7 +88,7 @@ _release_container (
Release mesh tag-sets
*/
h5_err_t
_h5t_release_tags (
h5tpriv_release_tags (
h5_file_t * const f
) {
h5t_fdata_t *t = f->t;
@@ -108,11 +108,11 @@ _h5t_release_tags (
\return H5_SUCCESS or error code
*/
h5_err_t
_h5t_add_mtagset (
h5tpriv_add_mtagset (
h5_file_t * const f,
char * name,
h5_id_t type,
h5t_tagset_t **rtagset
H5T_Tagset **rtagset
) {
h5t_fdata_t *t = f->t;
@@ -120,7 +120,7 @@ _h5t_add_mtagset (
Initialize data structure for m-tagsets, if not already done.
*/
if ( t->mtags.names == NULL ) {
TRY ( _h5t_init_mtagsets ( f, 521 ) );
TRY ( h5tpriv_init_mtagsets ( f, 521 ) );
}
/*
ToDo: Resize!
@@ -143,12 +143,12 @@ _h5t_add_mtagset (
/*
create new tagset
*/
h5t_tagset_t *tagset = NULL;
H5T_Tagset *tagset = NULL;
size_t size = (t->num_elems[t->num_levels-1] - 1) * sizeof(*tagset->elems)
+ sizeof(*tagset);
TRY ( (tagset = _h5_calloc ( f, 1, size ) ) );
TRY ( (tagset = h5priv_calloc ( f, 1, size ) ) );
TRY ( ( tagset->name = _h5_calloc ( f, 1, strlen(name)+1 ) ) );
TRY ( ( tagset->name = h5priv_calloc ( f, 1, strlen(name)+1 ) ) );
strcpy ( tagset->name, name );
tagset->type = type;
tagset->num_elems = t->num_elems[t->num_levels-1];
@@ -156,7 +156,7 @@ _h5t_add_mtagset (
add tagset to hash of tagsets
*/
void *__retval = NULL;
TRY ( _h5_hsearch ( f, tagset, H5_ENTER, &__retval, &t->mtags.sets ) );
TRY ( h5priv_hsearch ( f, tagset, H5_ENTER, &__retval, &t->mtags.sets ) );
t->mtags.changed = 1;
t->mtags.names[t->mtags.num_sets] = tagset->name;
@@ -172,7 +172,65 @@ h5t_add_mtagset (
char * name,
h5_id_t type
) {
return _h5t_add_mtagset ( f, name, type, 0 );
return h5tpriv_add_mtagset ( f, name, type, 0 );
}
/*!
Remove a tagset from the current mesh.
\param[in] f file handle
\param[in] name name of tagset to remove
\return H5_SUCCESS or error code
*/
static h5_err_t
_remove_tagset (
h5_file_t *const f,
h5t_tagcontainer_t *ctn,
const char name[]
) {
h5t_fdata_t *t = f->t;
/*
remove tagset with NAME from m-tagsets dictionary
*/
void *__retval = NULL;
TRY ( h5priv_hsearch ( f, &name, H5_REMOVE, &__retval, &ctn->sets ) );
H5T_Tagset *tagset = (H5T_Tagset*)__retval;
if ( tagset == NULL ) return H5_SUCCESS;
size_t el_idx, i;
size_t num_elems = t->num_elems[t->num_levels-1];
for ( el_idx = 0; el_idx < num_elems; el_idx++ ) {
h5t_tagsel_t *tags_of_elem = tagset->elems[el_idx];
/*
release all m-tags for this element
*/
for ( i = 0; i < tags_of_elem->size; i++ ) {
TRY ( h5priv_free ( f, tags_of_elem->valp[i] ) );
}
/*
release m-tag object for this element
*/
TRY ( h5priv_free ( f, tags_of_elem ) );
}
/*
release tagset object
*/
TRY ( h5priv_free ( f, tagset ) );
/*
remove HDF5 datasets and group for this tagset
*/
hid_t loc_id;
TRY ( loc_id = h5priv_open_group ( f, ctn->group_id, name ) );
TRY ( h5priv_delete_hdf5_link ( f, loc_id, "elems", H5P_DEFAULT ) );
TRY ( h5priv_delete_hdf5_link ( f, loc_id, "entities", H5P_DEFAULT ) );
TRY ( h5priv_delete_hdf5_link ( f, loc_id, "values", H5P_DEFAULT ) );
TRY ( h5priv_close_hdf5_group ( f, loc_id ) );
TRY ( h5priv_delete_hdf5_link ( f, ctn->group_id, name, H5P_DEFAULT ) );
return H5_SUCCESS;
}
/*!
@@ -186,19 +244,17 @@ h5t_add_mtagset (
h5_err_t
h5t_remove_mtagset (
h5_file_t *const f,
char name[]
const char name[]
) {
/*
- release all m-tags
- release pointer array
- remove tagset with NAME from m-tagsets dictionary
- remove HDF5 dataset
*/
return -2;
h5t_fdata_t *t = f->t;
TRY ( t->mtags.group_id = h5priv_open_group ( f, t->mesh_gid, "Tags" ) );
TRY ( _remove_tagset ( f, &t->mtags, name ) );
TRY ( h5priv_close_hdf5_group ( f, t->mtags.group_id ) );
return H5_SUCCESS;
}
h5_size_t
h5_ssize_t
h5t_get_num_mtagsets (
h5_file_t *const f
) {
@@ -214,7 +270,7 @@ h5t_get_num_mtagsets (
\return Number of mesh tag-sets
*/
h5_size_t
h5_ssize_t
h5t_get_mtagsets (
h5_file_t *const f,
char **names[]
@@ -228,13 +284,13 @@ h5_err_t
h5t_open_mtagset (
h5_file_t *const f,
const char *name,
h5t_tagset_t **retval
H5T_Tagset **retval
) {
h5t_fdata_t *t = f->t;
void *__retval = NULL;
TRY ( _h5_hsearch ( f, &name, H5_FIND, &__retval,
TRY ( h5priv_hsearch ( f, &name, H5_FIND, &__retval,
&t->mtags.sets ) );
*retval = (h5t_tagset_t*)__retval;
*retval = (H5T_Tagset*)__retval;
return H5_SUCCESS;
}
@@ -251,7 +307,7 @@ h5t_get_mtagset_type_by_name (
h5_file_t *const f,
char *name
) {
h5t_tagset_t *tagset;
H5T_Tagset *tagset;
TRY ( h5t_open_mtagset ( f, name, &tagset ) );
return tagset->type;
}
@@ -264,7 +320,7 @@ h5t_get_mtagset_type_by_name (
\param[out] name name of tag-set
\param[out] type type of tag-set
*/
h5_size_t
h5_ssize_t
h5t_get_mtagset_info (
h5_file_t *const f,
h5_id_t idx,
@@ -274,9 +330,9 @@ h5t_get_mtagset_info (
h5t_fdata_t *t = f->t;
*name = t->mtags.names[idx];
void *__retval = NULL;
_h5_hsearch ( f, t->mtags.names[idx], H5_FIND, &__retval,
h5priv_hsearch ( f, t->mtags.names[idx], H5_FIND, &__retval,
&t->mtags.sets );
h5t_tagset_t *retval = (h5t_tagset_t*)__retval;
H5T_Tagset *retval = (H5T_Tagset*)__retval;
*type = retval->type;
return H5_SUCCESS;
}
@@ -293,23 +349,23 @@ h5t_get_mtagset_info (
\return H5_SUCCESS or error code
*/
h5_err_t
_h5t_set_mtag (
h5tpriv_set_mtag (
h5_file_t *const f,
h5t_tagset_t *tagset,
H5T_Tagset *tagset,
const h5_id_t id,
const size_t size,
void *val
) {
size_t offs[5] = { 14, 0, 4, 10, 14 };
h5_id_t el_idx = _h5t_get_elem_idx ( id );
h5_id_t eoe_id = _h5t_get_face_id ( id );
h5_id_t type_id = _h5t_get_entity_type ( id );
h5_id_t el_idx = h5tpriv_get_elem_idx ( id );
h5_id_t eoe_id = h5tpriv_get_face_id ( id );
h5_id_t type_id = h5tpriv_get_entity_type ( id );
if ( tagset->elems[el_idx] == NULL ) {
/*
alloc new structure to store all tags for this element
and the given name
*/
TRY ( ( tagset->elems[el_idx] = _h5_calloc (
TRY ( ( tagset->elems[el_idx] = h5priv_calloc (
f,
1,
sizeof(*tagset->elems[el_idx] ) ) ) );
@@ -334,7 +390,7 @@ _h5t_set_mtag (
*/
size_t num_bytes = sizeof(*tagselem)
+ (tagselem->size-1) * sizeof(void*);
TRY ( ( tagset->elems[el_idx] = _h5_alloc (
TRY ( ( tagset->elems[el_idx] = h5priv_alloc (
f, tagselem, num_bytes ) ) );
tagselem = tagset->elems[el_idx];
/*
@@ -348,7 +404,7 @@ _h5t_set_mtag (
*/
size_t num_bytes = (size-1) * sizeof(h5_float64_t) + sizeof(h5t_tagval_t);
size_t k = tagselem->idx[i];
TRY ( ( tagselem->valp[k] = _h5_alloc (
TRY ( ( tagselem->valp[k] = h5priv_alloc (
f, tagselem->valp[k], num_bytes ) ) );
h5t_tagval_t *tagval = tagselem->valp[k];
tagval->size = size;
@@ -363,8 +419,8 @@ _h5t_set_mtag (
\param[in] f file handle
\param[in] name names of tagset
\param[in] id local id of entity
\param[in] size size of value
\param[in] val tag value
\param[in] size size of value
\return H5_SUCCESS or error code
*/
@@ -374,35 +430,23 @@ h5t_set_mtag_by_name (
char name[],
const h5_id_t id,
const size_t size,
void *val
) {
h5t_tagset_t *tagset;
TRY ( h5t_open_mtagset ( f, name, &tagset ) );
return _h5t_set_mtag ( f, tagset, id, size, val );
}
/*!
Get tag for entity in current mesh.
\param[in] f file handle
\param[in] name names of tagset
\param[in] id id of entity
\param[out] size dimension of value
\param[out] val tag value
\return H5_SUCCESS or error code
*/
h5_err_t
h5t_get_mtag (
h5_file_t *const f,
const h5t_tagset_t *tagset,
const h5_id_t id,
size_t *size,
void *val
) {
h5_id_t el_idx = _h5t_get_elem_idx ( id );
h5_id_t subentity_id = _h5t_get_face_id ( id );
h5_id_t type_id = _h5t_get_entity_type ( id );
H5T_Tagset *tagset;
TRY ( h5t_open_mtagset ( f, name, &tagset ) );
return h5tpriv_set_mtag ( f, tagset, id, size, val );
}
static h5_err_t
_get_tag_valp (
h5_file_t *const f,
const H5T_Tagset *tagset,
const h5_id_t entity_id,
h5t_tagval_t **valp
) {
h5_id_t el_idx = h5tpriv_get_elem_idx ( entity_id );
h5_id_t subentity_id = h5tpriv_get_face_id ( entity_id );
h5_id_t type_id = h5tpriv_get_entity_type ( entity_id );
if ( tagset->elems[el_idx] == NULL ) {
return H5_NOK; /* no tags for this element */
@@ -415,14 +459,42 @@ h5t_get_mtag (
return H5_NOK; /* no value set for this subentity */
}
size_t k = tagselem->idx[i];
h5t_tagval_t *tagval = tagselem->valp[k];
*size = tagval->size;
memcpy ( val, &tagval->vals, *size * sizeof(h5_float64_t) );
valp = &tagselem->valp[k];
return H5_SUCCESS;
}
/*!
Get tag for entity in given tagset.
\param[in] f file handle
\param[in] name names of tagset
\param[in] id id of entity
\param[out] size dimension of value
\param[out] val tag value
\return H5_SUCCESS or error code
*/
h5_ssize_t
h5t_get_tag (
h5_file_t *const f,
const H5T_Tagset *tagset,
const h5_id_t entity_id,
size_t *dim,
void *vals
) {
h5t_tagval_t *tagval;
TRY ( _get_tag_valp ( f, tagset, entity_id, &tagval ) );
if ( (*dim > tagval->size) || (vals == NULL) ) {
*dim = tagval->size;
}
if ( vals != NULL ) {
memcpy ( vals, &tagval->vals, *dim * sizeof(h5_float64_t) );
}
return tagval->size;
}
/*!
Get tag for entity in current mesh.
@@ -434,28 +506,35 @@ h5t_get_mtag (
\return H5_SUCCESS or error code
*/
h5_err_t
h5_ssize_t
h5t_get_mtag_by_name (
h5_file_t *const f,
h5_file_t* const f,
const char name[],
const h5_id_t id,
size_t *size,
void *val
size_t* dim,
void* vals
) {
h5t_tagset_t *tagset;
H5T_Tagset* tagset;
TRY ( h5t_open_mtagset ( f, name, &tagset ) );
return h5t_get_mtag ( f, tagset, id, size, val );
return h5t_get_tag ( f, tagset, id, dim, vals );
}
/*!
Remove tag for entity in current mesh.
\param[in] f file handle
\param[in] tagset pointer to tagset
\param[in] id id of entity
*/
h5_err_t
h5t_remove_mtag (
h5_file_t *const f,
h5t_tagset_t *tagset,
H5T_Tagset *tagset,
const h5_id_t id
) {
h5_id_t el_idx = _h5t_get_elem_idx ( id );
h5_id_t subentity_id = _h5t_get_face_id ( id );
h5_id_t type_id = _h5t_get_entity_type ( id );
h5_id_t el_idx = h5tpriv_get_elem_idx ( id );
h5_id_t subentity_id = h5tpriv_get_face_id ( id );
h5_id_t type_id = h5tpriv_get_entity_type ( id );
if ( tagset->elems[el_idx] == NULL ) {
return H5_SUCCESS; /* no tags for this element */
@@ -469,7 +548,21 @@ h5t_remove_mtag (
}
size_t k = tagselem->idx[i];
h5t_tagval_t *tagval = tagselem->valp[k];
TRY ( _h5_free ( f, tagval ) );
TRY ( h5priv_free ( f, tagval ) );
/*
remove from array
*/
size_t n = ( tagselem->size-k-1) * sizeof(tagselem->valp[0]);
memmove ( tagselem->valp[k], tagselem->valp[k+1], n );
tagselem->size--;
/*
adapt indices
*/
for ( i = 0; i < tagselem->size; i++ ) {
if ( tagselem->idx[i] > k ) {
tagselem->idx[i]--;
}
}
return H5_SUCCESS;
}
@@ -486,7 +579,7 @@ h5t_remove_mtag_by_name (
const char name[],
const h5_id_t id
) {
h5t_tagset_t *tagset;
H5T_Tagset *tagset;
TRY ( h5t_open_mtagset ( f, name, &tagset ) );
return h5t_remove_mtag ( f, tagset, id );
}
@@ -506,7 +599,7 @@ static h5_err_t
_write_tagset (
h5_file_t * const f,
hid_t loc_id,
h5t_tagset_t *tagset
H5T_Tagset *tagset
) {
h5t_fdata_t *t = f->t;
hid_t group_id;
@@ -514,23 +607,23 @@ _write_tagset (
alloc memory
*/
h5t_tag_idx_t *elems;
size_t idx_elem;
size_t el_idx;
size_t num_elems = t->num_elems[t->num_levels-1];
TRY ( ( elems = _h5_calloc (
TRY ( ( elems = h5priv_calloc (
f, num_elems+1, sizeof(*elems) ) ) );
h5t_tag_idx_t *entities;
size_t idx_entity = 0;
size_t ent_idx = 0;
size_t num_entities = 0;
size_t max_entities = num_elems+1;
TRY ( ( entities = _h5_calloc (
TRY ( ( entities = h5priv_calloc (
f, max_entities, sizeof(*entities) ) ) );
h5_int64_t *vals;
size_t idx_val = 0;
size_t val_idx = 0;
size_t num_vals = 0;
size_t max_vals = num_elems;
TRY ( ( vals = _h5_calloc (
TRY ( ( vals = h5priv_calloc (
f, max_vals, sizeof(*vals) ) ) );
h5_id_t tmap[15] = { H5T_ETYPE_VERTEX, H5T_ETYPE_VERTEX,
@@ -549,12 +642,12 @@ _write_tagset (
/*
build data structures in memory
*/
for ( idx_elem = 0; idx_elem < num_elems; idx_elem++ ) {
h5t_tagsel_t *tags_of_elem = tagset->elems[idx_elem];
for ( el_idx = 0; el_idx < num_elems; el_idx++ ) {
h5t_tagsel_t *tags_of_elem = tagset->elems[el_idx];
size_t num_subentities = 0;
h5_id_t start_idx_entities = idx_entity;
h5_id_t start_idx_entities = ent_idx;
size_t i;
for ( i = 0; i < 15; i++ ) {
for ( i = 0; i < tags_of_elem->size; i++ ) {
int k = tags_of_elem->idx[i];
if ( k == -1 ) continue;
h5t_tagval_t *valp = tags_of_elem->valp[k];
@@ -562,53 +655,53 @@ _write_tagset (
/*
append value to array of values
*/
if ( idx_val + valp->size > max_vals ) {
if ( val_idx + valp->size > max_vals ) {
max_vals += num_elems;
TRY ( ( vals = _h5_alloc (
TRY ( ( vals = h5priv_alloc (
f, vals,
max_vals*sizeof(*vals) ) ) );
}
memcpy (
vals+idx_val,
vals+val_idx,
&valp->vals[0].i,
valp->size*sizeof(*vals) );
/*
append entity descriptor
*/
if ( idx_entity >= max_entities ) {
if ( ent_idx >= max_entities ) {
max_entities += num_elems;
TRY ( ( entities = _h5_alloc (
TRY ( ( entities = h5priv_alloc (
f, entities,
max_entities*sizeof(*entities) )
) );
}
h5_id_t type_id = tmap[i];
h5_id_t sentity_id = smap[i];
entities[idx_entity].eid = _h5t_build_id (
type_id, sentity_id, idx_elem );
entities[idx_entity].idx = idx_val;
idx_val += valp->size;
idx_entity++;
entities[ent_idx].eid = h5tpriv_build_id (
type_id, sentity_id, el_idx );
entities[ent_idx].idx = val_idx;
val_idx += valp->size;
ent_idx++;
}
/* append element descriptor */
elems[idx_elem].eid = idx_elem;
elems[idx_elem].idx = start_idx_entities;
elems[el_idx].eid = el_idx;
elems[el_idx].idx = start_idx_entities;
start_idx_entities += num_subentities;
}
num_entities = idx_entity;
num_vals = idx_val;
num_entities = ent_idx;
num_vals = val_idx;
elems[num_elems].eid = -1;
elems[num_elems].idx = num_entities;
entities[idx_entity].eid = -1;
entities[idx_entity].idx = num_vals;
entities[ent_idx].eid = -1;
entities[ent_idx].idx = num_vals;
/*
write data
*/
TRY ( group_id = _h5_open_group ( f, loc_id, tagset->name ) );
TRY ( group_id = h5priv_open_group ( f, loc_id, tagset->name ) );
h5_dsinfo_t dsinfo;
memset ( &dsinfo, 0, sizeof(dsinfo) );
dsinfo.rank = 1;
@@ -619,12 +712,12 @@ _write_tagset (
strcpy ( dsinfo.name, "elems" );
dsinfo.dims[0] = num_elems + 1;
dsinfo.type_id = t->dtypes.h5t_tag_idx_t;
TRY( dsinfo.create_prop = _hdf_create_property ( f,
TRY( dsinfo.create_prop = h5priv_create_hdf5_property ( f,
H5P_DATASET_CREATE ) );
TRY( _hdf_set_chunk_property ( f, dsinfo.create_prop, dsinfo.rank,
TRY( h5priv_set_hdf5_chunk_property ( f, dsinfo.create_prop, dsinfo.rank,
dsinfo.chunk_dims ) );
TRY ( _h5_write_dataset_by_name (
TRY ( h5priv_write_dataset_by_name (
f,
group_id,
&dsinfo,
@@ -634,7 +727,7 @@ _write_tagset (
strcpy ( dsinfo.name, "entities" );
dsinfo.dims[0] = num_entities + 1;
TRY ( _h5_write_dataset_by_name (
TRY ( h5priv_write_dataset_by_name (
f,
group_id,
&dsinfo,
@@ -645,7 +738,7 @@ _write_tagset (
dsinfo.dims[0] = num_vals;
dsinfo.type_id = t->dtypes.h5_int64_t;
TRY ( _h5_write_dataset_by_name (
TRY ( h5priv_write_dataset_by_name (
f,
group_id,
&dsinfo,
@@ -661,23 +754,23 @@ _write_tagset (
static h5_err_t
_write_container (
h5_file_t * const f,
h5t_tagcontainer_t *container
h5t_tagcontainer_t *ctn
) {
size_t idx;
for ( idx = 0; idx < container->num_sets; idx++ ) {
for ( idx = 0; idx < ctn->num_sets; idx++ ) {
void *__retval;
TRY ( _h5_hsearch ( f,
&container->names[idx],
TRY ( h5priv_hsearch ( f,
&ctn->names[idx],
H5_FIND,
&__retval,
&container->sets ) );
h5t_tagset_t *tagset = (h5t_tagset_t*)__retval;
if ( tagset->changed ) {
TRY ( _write_tagset (
f,
container->group_id,
tagset ) );
}
&ctn->sets ) );
H5T_Tagset *tagset = (H5T_Tagset*)__retval;
if ( tagset->changed ) {
TRY ( _write_tagset (
f,
ctn->group_id,
tagset ) );
}
}
return H5_SUCCESS;
}
@@ -687,12 +780,14 @@ _write_container (
Store mesh tags container
*/
h5_err_t
_h5t_write_mtags (
h5tpriv_write_mtags (
h5_file_t *const f
) {
h5t_fdata_t *t = f->t;
TRY ( t->mtags.group_id = _h5_open_group ( f, t->mesh_gid, "Tags" ) );
return _write_container ( f, &f->t->mtags );
TRY ( t->mtags.group_id = h5priv_open_group ( f, t->mesh_gid, "Tags" ) );
TRY ( _write_container ( f, &f->t->mtags ) );
TRY ( h5priv_close_hdf5_group ( f, t->mtags.group_id ) );
return H5_SUCCESS;
}
static h5_err_t
@@ -706,8 +801,8 @@ _read_tagset (
h5_id_t type;
hid_t group_id;
hid_t dset_id;
TRY ( _hdf_get_objname_by_idx_in_group ( f, loc_id, idx, &name ) );
TRY ( group_id = _hdf_open_group ( f, loc_id, name ) );
TRY ( h5priv_get_objname_by_idx_in_hdf5_group ( f, loc_id, idx, &name ) );
TRY ( group_id = h5priv_open_hdf5_group ( f, loc_id, name ) );
/*
read datasets: "elems", "entities" and "values"
@@ -715,59 +810,59 @@ _read_tagset (
h5t_tag_idx_t *elems;
size_t num_elems = 0;
TRY ( dset_id = _hdf_open_dataset ( f, group_id, "elems" ) );
TRY ( num_elems = _hdf_get_npoints_of_dataset ( f, dset_id ) );
TRY ( elems = _h5_calloc ( f, num_elems, sizeof(*elems) ) );
TRY ( dset_id = h5priv_open_hdf5_dataset ( f, group_id, "elems" ) );
TRY ( num_elems = h5priv_get_npoints_of_hdf5_dataset ( f, dset_id ) );
TRY ( elems = h5priv_calloc ( f, num_elems, sizeof(*elems) ) );
h5_dsinfo_t dsinfo;
memset ( &dsinfo, 0, sizeof(dsinfo) );
dsinfo.type_id = t->dtypes.h5t_tag_idx_t;
TRY ( _h5_read_dataset (
TRY ( h5priv_read_dataset (
f,
dset_id,
&dsinfo,
_open_space_all, _open_space_all,
elems ) );
TRY ( _hdf_close_dataset ( f, dset_id ) );
TRY ( h5priv_close_hdf5_dataset ( f, dset_id ) );
num_elems--;
h5t_tag_idx_t *entities;
size_t idx_entity = 0;
size_t ent_idx = 0;
size_t num_entities = 0;
TRY ( dset_id = _hdf_open_dataset ( f, group_id, "entities" ) );
TRY ( num_entities = _hdf_get_npoints_of_dataset ( f, dset_id ) );
TRY ( entities = _h5_calloc ( f, num_entities, sizeof(*entities) ) );
TRY ( _h5_read_dataset (
TRY ( dset_id = h5priv_open_hdf5_dataset ( f, group_id, "entities" ) );
TRY ( num_entities = h5priv_get_npoints_of_hdf5_dataset ( f, dset_id ) );
TRY ( entities = h5priv_calloc ( f, num_entities, sizeof(*entities) ) );
TRY ( h5priv_read_dataset (
f,
dset_id,
&dsinfo,
_open_space_all, _open_space_all,
entities ) );
TRY ( _hdf_close_dataset ( f, dset_id ) );
TRY ( h5priv_close_hdf5_dataset ( f, dset_id ) );
num_entities--;
h5_int64_t *vals;
size_t num_vals = 0;
TRY ( dset_id = _hdf_open_dataset ( f, group_id, "values" ) );
TRY ( num_vals = _hdf_get_npoints_of_dataset ( f, dset_id ) );
TRY ( vals = _h5_calloc ( f, num_vals, sizeof(*vals) ) );
TRY ( dsinfo.type_id = _hdf_get_dataset_type ( f, dset_id ) );
TRY ( _h5_read_dataset (
TRY ( dset_id = h5priv_open_hdf5_dataset ( f, group_id, "values" ) );
TRY ( num_vals = h5priv_get_npoints_of_hdf5_dataset ( f, dset_id ) );
TRY ( vals = h5priv_calloc ( f, num_vals, sizeof(*vals) ) );
TRY ( dsinfo.type_id = h5priv_get_hdf5_dataset_type ( f, dset_id ) );
TRY ( h5priv_read_dataset (
f,
dset_id,
&dsinfo,
_open_space_all, _open_space_all,
vals ) );
TRY ( _hdf_close_dataset ( f, dset_id ) );
TRY ( h5priv_close_hdf5_dataset ( f, dset_id ) );
type = h5_normalize_h5_type ( f, dsinfo.type_id );
/*
add tagset and set values
*/
h5t_tagset_t *tagset;
TRY ( _h5t_add_mtagset ( f, name, type, &tagset ) );
for ( idx_entity = 0; idx_entity < num_entities; idx_entity++ ) {
h5t_tag_idx_t *entity = &entities[idx_entity];
H5T_Tagset *tagset;
TRY ( h5tpriv_add_mtagset ( f, name, type, &tagset ) );
for ( ent_idx = 0; ent_idx < num_entities; ent_idx++ ) {
h5t_tag_idx_t *entity = &entities[ent_idx];
size_t dim = (entity+1)->idx - entity->idx;
TRY ( _h5t_set_mtag (
TRY ( h5tpriv_set_mtag (
f,
tagset,
entity->eid,
@@ -779,19 +874,76 @@ _read_tagset (
}
h5_err_t
_h5t_read_tag_container (
h5tpriv_read_tag_container (
h5_file_t * const f,
h5t_tagcontainer_t *container
h5t_tagcontainer_t *ctn
) {
size_t num_sets;
TRY ( ( num_sets = _hdf_get_num_objs_in_group (
f, container->group_id ) ) );
TRY ( ( num_sets = h5priv_get_num_objs_in_hdf5_group (
f, ctn->group_id ) ) );
hsize_t idx;
for ( idx = 0; idx < num_sets; idx++ ) {
TRY ( _read_tagset ( f, container->group_id, idx ) );
TRY ( _read_tagset ( f, ctn->group_id, idx ) );
}
return H5_SUCCESS;
}
/*
Get m-tagset of given entity. Return the number of tagsets as result
of the function and the names in the pointer array \c name. To query the
number of tagsets, use \c NULL as value of \c name. If the actual number
of tagset is greater than \c dim, the first \c dim names found will be
returned.
\remark
This functions performs with O(n) where n is the number of tagsets.
\param[in] f file handle
\param[in] entity_id ID of entity we want to know the set tags
\param[out] names Array of ptr to tagset names
\param[in] dim dimension of array
\return number of tagsets
*/
h5_ssize_t
h5tpriv_get_tagset_names_of_entity (
h5_file_t * const f,
h5t_tagcontainer_t *ctn,
h5_id_t entity_id,
char *names[],
h5_size_t dim
) {
size_t idx;
size_t _dim = 0;
for (idx = 0; idx < ctn->num_sets; idx++) {
void *__retval;
TRY (h5priv_hsearch (f,
&ctn->names[idx],
H5_FIND,
&__retval,
&ctn->sets));
H5T_Tagset *tset = (H5T_Tagset*)__retval;
h5t_tagval_t *tval;
if (_get_tag_valp (f, tset, entity_id, &tval) != H5_SUCCESS) {
continue;
}
if ( (names != NULL) && (_dim <= dim) ) {
names[_dim] = ctn->names[idx];
}
_dim++;
}
return _dim;;
}
h5_ssize_t
h5t_get_mtagset_names_of_entity (
h5_file_t * const f,
h5_id_t entity_id,
char *names[],
h5_size_t dim
) {
return h5tpriv_get_tagset_names_of_entity (
f, &f->t->mtags, entity_id, names, dim);
}
+18 -12
View File
@@ -1,19 +1,25 @@
#ifndef __H5T_TAGS_H
#define __H5T_TAGS_H
h5_err_t h5t_add_mtagset ( h5_file_t *const f, char name[], h5_id_t id );
h5_err_t h5t_remove_mtagset ( h5_file_t *const f, char name[] );
h5_size_t h5t_get_num_mtagsets ( h5_file_t *const f );
h5_size_t h5t_get_mtagsets ( h5_file_t *const f, char **names[] );
h5_err_t h5t_get_mtagset_info ( h5_file_t *const f, const h5_id_t idx,
char **names, h5_id_t *type );
h5_id_t h5t_get_mtagset_type_by_name ( h5_file_t *const f, char name[] );
typedef struct h5t_tagset H5T_Tagset;
h5_err_t h5t_set_mtag_by_name ( h5_file_t *const f, char name[], const h5_id_t id,
const size_t dims, void *value );
h5_err_t h5t_get_mtag_by_name ( h5_file_t *const f, const char name[],
const h5_id_t id, size_t *dims, void *value );
h5_err_t h5t_remove_mtag_by_name ( h5_file_t *const f, const char name[],
h5_err_t h5t_add_mtagset ( h5_file_t* const f, char name[], h5_id_t id );
h5_err_t h5t_remove_mtagset ( h5_file_t* const f, const char name[] );
h5_err_t h5t_open_mtagset ( h5_file_t* const f, const char *name,
H5T_Tagset** retval );
h5_size_t h5t_get_num_mtagsets ( h5_file_t* const f );
h5_size_t h5t_get_mtagsets ( h5_file_t* const f, char** names[] );
h5_err_t h5t_get_mtagset_info ( h5_file_t* const f, const h5_id_t idx,
char** names, h5_id_t* type );
h5_id_t h5t_get_mtagset_type_by_name ( h5_file_t* const f, char name[] );
h5_err_t h5t_set_mtag_by_name ( h5_file_t* const f, char name[], const h5_id_t id,
const size_t dim, void* value );
h5_err_t h5t_get_mtag_by_name ( h5_file_t* const f, const char name[],
const h5_id_t id, size_t* dim, void* vals );
h5_err_t h5t_remove_mtag_by_name ( h5_file_t* const f, const char name[],
const h5_id_t id );
#endif
+12 -8
View File
@@ -5,13 +5,16 @@
* Tags can be assigned to all entities of a mesh
* Tag values are arrays of int64 or float64
* Complex numbers can be stored as array of float64 with even dimension
* Tags are addressed via a name and the entity.
* Tags are addressed via a name and the entity id.
* Tags with the same name are called a "tagset"
* Tagsets can be used to store time/step-constant data. These tagsets are
called "m-tagsets" and are assigned directly to a mesh.
* Tagsets can be used to store data which may change from step to step.
These tagsets are called "s-tagsets" and are assigned to a mesh and a
(time-)step.
ToDo
* Scalar values
*/
@@ -29,7 +32,8 @@
Structure to store a tag value
*/
typedef struct {
size_t size;
int32_t subent_id; /* sub-entitiy id */
int32_t size;
union {
h5_float64_t f;
h5_int64_t i;
@@ -48,19 +52,19 @@ typedef struct {
If idx[k] is equal -1, no tag has been assigned to the appropriate entity.
*/
typedef struct {
signed char size; /* size of valp */
signed char idx[15];
signed char size; /* size of valp */
h5t_tagval_t *valp[1];
} h5t_tagsel_t;
typedef struct h5t_tagset {
struct h5t_tagset {
char * name;
unsigned int changed; /* flag tagset changed, ... */
unsigned int num_elems;
h5_id_t type; /* int64 or float64 */
h5t_tagsel_t *elems[1];
} h5t_tagset_t;
};
/*
Structure for hash table of tagsets
@@ -79,8 +83,8 @@ typedef struct {
h5_id_t idx;
} h5t_tag_idx_t;
h5_err_t _h5t_write_mtags ( h5_file_t *const f );
h5_err_t _h5t_release_tags ( h5_file_t * const f );
h5_err_t _h5t_read_tag_container ( h5_file_t * const f,
h5_err_t h5tpriv_write_mtags ( h5_file_t *const f );
h5_err_t h5tpriv_release_tags ( h5_file_t * const f );
h5_err_t h5tpriv_read_tag_container ( h5_file_t * const f,
h5t_tagcontainer_t *container );
#endif
+29
View File
@@ -1,11 +1,40 @@
#ifndef __H5T_TYPES_PRIVATE_H
#define __H5T_TYPES_PRIVATE_H
struct h5t_adjacency_methods {
h5_err_t (*rebuild_internal_structs)(h5_file_t * const);
h5_err_t (*release_internal_structs)(h5_file_t * const);
h5_err_t (*get_edges_upadjacent_to_vertex)(
h5_file_t * const, const h5_id_t, h5_idlist_t**);
h5_err_t (*get_triangles_upadjacent_to_vertex)(
h5_file_t * const, const h5_id_t, h5_idlist_t**);
h5_err_t (*get_tets_upadjacent_to_vertex)(
h5_file_t * const, const h5_id_t, h5_idlist_t**);
h5_err_t (*get_triangles_upadjacent_to_edge)(
h5_file_t * const, const h5_id_t, h5_idlist_t**);
h5_err_t (*get_tets_upadjacent_to_edge)(
h5_file_t * const, const h5_id_t, h5_idlist_t**);
h5_err_t (*get_tets_upadjacent_to_triangle)(
h5_file_t * const, const h5_id_t, h5_idlist_t**);
h5_err_t (*get_vertices_downadjacent_to_edge)(
h5_file_t * const, const h5_id_t, h5_idlist_t**);
h5_err_t (*get_vertices_downadjacent_to_triangle)(
h5_file_t * const, const h5_id_t, h5_idlist_t**);
h5_err_t (*get_vertices_downadjacent_to_tet)(
h5_file_t * const, const h5_id_t, h5_idlist_t**);
h5_err_t (*get_edges_downadjacent_to_triangle)(
h5_file_t * const, const h5_id_t, h5_idlist_t**);
h5_err_t (*get_edges_downadjacent_to_tet)(
h5_file_t * const, const h5_id_t, h5_idlist_t**);
h5_err_t (*get_triangles_downadjacent_to_tet)(
h5_file_t * const, const h5_id_t, h5_idlist_t**);
};
struct h5t_methods {
h5_err_t (*_alloc_elems)(h5_file_t * const, const size_t, const size_t);
h5_id_t (*_store_elem)(h5_file_t * const, const h5_id_t, const h5_id_t*);
h5_id_t (*_refine_elem)(h5_file_t * const, const h5_id_t);
struct h5t_adjacency_methods *adjacency;
};
typedef struct h5_vertex {
+30 -30
View File
@@ -24,7 +24,7 @@ _get_diskshape_for_reading (
struct h5u_fdata *u = f->u;
hid_t space;
TRY( space = _hdf_get_dataset_space ( f, dataset ) );
TRY( space = h5priv_get_hdf5_dataset_space ( f, dataset ) );
if ( h5u_has_view ( f ) ) {
hsize_t stride;
@@ -42,14 +42,14 @@ _get_diskshape_for_reading (
/* now we select a subset */
if ( u->diskshape > 0 ) {
TRY ( _hdf_select_hyperslab_of_dataspace (
TRY ( h5priv_select_hyperslab_of_hdf5_dataspace (
f,
u->diskshape,
H5S_SELECT_SET,
&start, &stride, &count,
NULL ) );
}
TRY ( _hdf_select_hyperslab_of_dataspace (
TRY ( h5priv_select_hyperslab_of_hdf5_dataspace (
f,
space,
H5S_SELECT_SET,
@@ -76,7 +76,7 @@ _get_memshape_for_reading (
if ( h5u_has_view ( f ) ) {
hsize_t dmax=H5S_UNLIMITED;
hsize_t len = u->viewend - u->viewstart;
return _hdf_create_dataspace ( f, 1, &len, &dmax );
return h5priv_create_hdf5_dataspace ( f, 1, &len, &dmax );
} else {
return H5S_ALL;
}
@@ -104,19 +104,19 @@ h5u_get_num_elems (
H5G_DATASET,
0,
dataset_name, sizeof (dataset_name) ) );
TRY( dataset_id = _hdf_open_dataset ( f, f->step_gid, dataset_name ) );
TRY( dataset_id = h5priv_open_hdf5_dataset ( f, f->step_gid, dataset_name ) );
TRY( space_id = _get_diskshape_for_reading ( f, dataset_id ) );
if ( h5u_has_view ( f ) ) {
TRY ( nparticles = _hdf_get_selected_npoints_of_dataspace (
TRY ( nparticles = h5priv_get_selected_npoints_of_hdf5_dataspace (
f, space_id ) );
}
else {
TRY ( nparticles = _hdf_get_npoints_of_dataspace (
TRY ( nparticles = h5priv_get_npoints_of_hdf5_dataspace (
f, space_id ) );
}
TRY( _hdf_close_dataspace( f, space_id ) );
TRY( _hdf_close_dataset( f, dataset_id ) );
TRY( h5priv_close_hdf5_dataspace( f, space_id ) );
TRY( h5priv_close_hdf5_dataset( f, dataset_id ) );
return (h5_int64_t) nparticles;
}
@@ -136,10 +136,10 @@ h5u_read_elems (
if ( f->step_gid < 0 ) {
TRY( h5_set_step ( f, f->step_idx ) );
}
TRY( (dataset_id = _hdf_open_dataset ( f, f->step_gid, name ) ) );
TRY( (dataset_id = h5priv_open_hdf5_dataset ( f, f->step_gid, name ) ) );
TRY( (space_id = _get_diskshape_for_reading ( f, dataset_id ) ) );
TRY( (memspace_id = _get_memshape_for_reading ( f, dataset_id ) ) );
TRY( _hdf_read_dataset (
TRY( h5priv_read_hdf5_dataset (
f,
dataset_id,
type,
@@ -147,9 +147,9 @@ h5u_read_elems (
space_id,
f->xfer_prop,
array ) );
TRY( _hdf_close_dataspace( f, space_id ) );
TRY( _hdf_close_dataspace( f, memspace_id ) );
TRY( _hdf_close_dataset ( f, dataset_id ) );
TRY( h5priv_close_hdf5_dataspace( f, space_id ) );
TRY( h5priv_close_hdf5_dataspace( f, memspace_id ) );
TRY( h5priv_close_hdf5_dataset ( f, dataset_id ) );
return H5_SUCCESS;
}
@@ -173,15 +173,15 @@ h5u_set_num_elements (
return H5_SUCCESS;
}
#endif
TRY( _hdf_close_dataspace( f, u->diskshape ) );
TRY( _hdf_close_dataspace( f, u->memshape ) );
TRY( _hdf_close_dataspace( f, u->shape ) );
TRY( h5priv_close_hdf5_dataspace( f, u->diskshape ) );
TRY( h5priv_close_hdf5_dataspace( f, u->memshape ) );
TRY( h5priv_close_hdf5_dataspace( f, u->shape ) );
u->diskshape = H5S_ALL;
u->memshape = H5S_ALL;
u->shape = H5S_ALL;
u->nparticles =(hsize_t) nparticles;
#ifndef PARALLEL_IO
TRY( u->shape = _hdf_create_dataspace (
TRY( u->shape = h5priv_create_hdf5_dataspace (
f,
1,
&(u->nparticles),
@@ -210,7 +210,7 @@ h5u_set_num_elements (
acquire the number of particles to be written from each MPI process
*/
TRY ( _h5_mpi_allgather (
TRY ( h5priv_mpi_allgather (
f,
&nparticles, 1, MPI_LONG_LONG,
f->u->pnparticles, 1, MPI_LONG_LONG,
@@ -239,17 +239,17 @@ h5u_set_num_elements (
}
/* declare overall datasize */
TRY ( f->u->shape = _hdf_create_dataspace ( f, 1, &total, &total ) );
TRY ( f->u->shape = h5priv_create_hdf5_dataspace ( f, 1, &total, &total ) );
/* declare overall data size but then will select a subset */
TRY ( f->u->diskshape = _hdf_create_dataspace ( f, 1, &total, &total) );
TRY ( f->u->diskshape = h5priv_create_hdf5_dataspace ( f, 1, &total, &total) );
/* declare local memory datasize */
TRY ( f->u->memshape = _hdf_create_dataspace (
TRY ( f->u->memshape = h5priv_create_hdf5_dataspace (
f, 1, &(f->u->nparticles), &dmax ) );
count[0] = nparticles;
TRY ( _hdf_select_hyperslab_of_dataspace (
TRY ( h5priv_select_hyperslab_of_hdf5_dataspace (
f,
f->u->diskshape,
H5S_SELECT_SET,
@@ -295,11 +295,11 @@ h5u_reset_view (
u->viewstart = -1;
u->viewend = -1;
TRY( _hdf_close_dataspace( f, u->shape ) );
TRY( h5priv_close_hdf5_dataspace( f, u->shape ) );
u->shape = H5S_ALL;
TRY( _hdf_close_dataspace( f, u->diskshape ) );
TRY( h5priv_close_hdf5_dataspace( f, u->diskshape ) );
u->diskshape = H5S_ALL;
TRY( _hdf_close_dataspace( f, u->memshape ) );
TRY( h5priv_close_hdf5_dataspace( f, u->memshape ) );
u->memshape = H5S_ALL;
return H5_SUCCESS;
@@ -358,16 +358,16 @@ h5u_set_view (
u->nparticles = end - start + 1;
/* declare overall datasize */
TRY ( u->shape = _hdf_create_dataspace ( f, 1, &total, &total ) );
TRY ( u->shape = h5priv_create_hdf5_dataspace ( f, 1, &total, &total ) );
/* declare overall data size but then will select a subset */
TRY ( u->diskshape= _hdf_create_dataspace ( f, 1, &total, &total ) );
TRY ( u->diskshape= h5priv_create_hdf5_dataspace ( f, 1, &total, &total ) );
/* declare local memory datasize */
TRY ( u->memshape = _hdf_create_dataspace (
TRY ( u->memshape = h5priv_create_hdf5_dataspace (
f, 1, &(u->nparticles), &dmax ) );
TRY ( _hdf_select_hyperslab_of_dataspace (
TRY ( h5priv_select_hyperslab_of_hdf5_dataspace (
f,
u->diskshape,
H5S_SELECT_SET,