- changes for revised API

- bugfixes
- ...
This commit is contained in:
2009-03-13 15:23:52 +00:00
parent 2006e4d5ff
commit dc631ce508
10 changed files with 212 additions and 213 deletions
+65 -2
View File
@@ -62,7 +62,6 @@ H5OpenFile (
const h5_int32_t oflag, /*!< file open flags */
const MPI_Comm comm /*!< MPI communicator */
) {
return h5_open_file( filename, H5_O_RDWR, comm, __func__ );
}
@@ -99,7 +98,7 @@ H5DefineStepNameFormat (
) {
SET_FNAME ( f, __func__ );
return h5_define_stepname_fmt( f, name, width );
return h5_set_stepname_fmt( f, name, width );
}
/*!
@@ -188,3 +187,67 @@ H5TraverseSteps (
return h5_traverse_steps( f );
}
/*!
\ingroup h5part_c_api
\defgroup h5part_c_api_errhandling Error Handling
*/
/*!
\ingroup h5part_c_api_errhandling
Set verbosity level to \c level.
\return \c H5_SUCCESS
*/
h5_err_t
H5SetVerbosityLevel (
const h5_id_t level
) {
return h5_set_debuglevel ( level );
}
/*!
\ingroup h5part_c_api_errhandling
Set error handler to \c handler.
\return \c H5_SUCCESS
*/
h5_err_t
H5SetErrorHandler (
h5_errorhandler_t handler
) {
return h5_set_errorhandler( handler );
}
/*!
\ingroup h5part_c_api_errhandling
Get current error handler.
\return Pointer to error handler.
*/
h5_errorhandler_t
H5GetErrorHandler (
void
) {
return h5_get_errorhandler();
}
/*!
\ingroup h5part_c_api_errhandling
Get last error code.
\return error code
*/
h5_err_t
H5GetErrno (
h5_file_t * const f
) {
return h5_get_errno( f );
}
/*! @} */
+21
View File
@@ -62,4 +62,25 @@ h5_err_t
H5TraverseSteps (
h5_file_t *f
);
h5_err_t
H5SetVerbosityLevel (
const h5_id_t level
);
h5_err_t
H5SetErrorHandler (
h5_errorhandler_t handler
);
h5_errorhandler_t
H5GetErrorHandler (
void
);
h5_err_t
H5GetErrno (
h5_file_t * const f
);
#endif
+64 -76
View File
@@ -546,23 +546,17 @@ h5_err_t
_release_hyperslab (
h5_file_t *f /*!< IN: file handle */
) {
herr_t herr;
struct h5b_fdata *b = f->b;
TRY( _h5_close_dataspace( f, b->shape ) );
f->b->shape = -1;
TRY( _h5_close_dataspace( f, b->diskshape ) );
f->b->diskshape = -1;
TRY( _h5_close_dataspace( f, f->b->memshape ) );
f->b->memshape = -1;
if ( f->b->shape > 0 ) {
herr = H5Sclose ( f->b->shape );
if ( herr < 0 ) return H5_ERR_HDF5;
f->b->shape = -1;
}
if ( f->b->diskshape > 0 ) {
herr = H5Sclose ( f->b->diskshape );
if ( herr < 0 ) return H5_ERR_HDF5;
f->b->diskshape = -1;
}
if ( f->b->memshape > 0 ) {
herr = H5Sclose ( f->b->memshape );
if ( herr < 0 ) return H5_ERR_HDF5;
f->b->memshape = -1;
}
return H5_SUCCESS;
}
@@ -611,8 +605,7 @@ H5BlockDefine3DFieldLayout(
herr = _dissolve_ghostzones ( f );
if ( herr < 0 ) return HANDLE_H5_LAYOUT_ERR ( f );
herr = _release_hyperslab ( f );
if ( herr < 0 ) return HANDLE_H5S_CLOSE_ERR ( f );
TRY( _release_hyperslab ( f ) );
b->have_layout = 1;
@@ -785,19 +778,17 @@ _open_block_group (
struct h5b_fdata *b = f->b;
if ( (f->step_idx != b->step_idx) && (b->blockgroup > 0) ) {
herr_t herr = H5Gclose ( b->blockgroup );
if ( herr < 0 ) return HANDLE_H5G_CLOSE_ERR ( f );
TRY( _h5_close_group( f, b->blockgroup ) );
f->b->blockgroup = -1;
}
if ( b->blockgroup < 0 ) {
hid_t herr = H5Gopen ( f->step_gid, H5BLOCK_GROUPNAME_BLOCK,
H5P_DEFAULT );
if ( herr < 0 ) return HANDLE_H5G_OPEN_ERR (
f,
h5_get_objname(f->step_gid),
H5BLOCK_GROUPNAME_BLOCK );
b->blockgroup = herr;
TRY(
b->blockgroup = _h5_open_group (
f,
f->step_gid,
H5BLOCK_GROUPNAME_BLOCK )
);
}
b->step_idx = f->step_idx;
@@ -841,18 +832,12 @@ _open_field_group (
struct h5b_fdata *b = f->b;
h5_int64_t h5err = _open_block_group ( f );
if ( h5err < 0 ) return h5err;
TRY( _open_block_group ( f ) );
if ( ! _have_object ( b->blockgroup, name ) )
return HANDLE_H5_NOENT_ERR ( f, name );
herr_t herr = H5Gopen ( b->blockgroup, name, H5P_DEFAULT );
if ( herr < 0 ) return HANDLE_H5G_OPEN_ERR (
f,
h5_get_objname(b->blockgroup), name );
b->field_group_id = herr;
TRY( b->field_group_id = _h5_open_group( f, b->blockgroup, name ) );
return H5_SUCCESS;
}
@@ -914,8 +899,7 @@ _select_hyperslab_for_reading (
p->j_end - p->j_start + 1,
p->i_end - p->i_start + 1 };
h5_int64_t herr = _release_hyperslab ( f );
if ( herr < 0 ) return HANDLE_H5S_CLOSE_ERR ( f );
TRY( _release_hyperslab ( f ) );
b->diskshape = H5Dget_space ( dataset );
if ( b->diskshape < 0 ) return HANDLE_H5D_GET_SPACE_ERR ( f );
@@ -948,7 +932,7 @@ _select_hyperslab_for_reading (
if ( b->memshape < 0 )
return HANDLE_H5S_CREATE_SIMPLE_3D_ERR ( f, part_dims );
herr = H5Sselect_hyperslab (
herr_t herr = H5Sselect_hyperslab (
b->diskshape,
H5S_SELECT_SET,
start,
@@ -992,24 +976,28 @@ _read_data (
) {
struct h5b_fdata *b = f->b;
hid_t dataset_id = H5Dopen ( b->field_group_id, name, H5P_DEFAULT );
if ( dataset_id < 0 ) return HANDLE_H5D_OPEN_ERR ( f, name );
h5_err_t herr = _select_hyperslab_for_reading ( f, dataset_id );
if ( herr < 0 ) return herr;
herr = H5Dread (
dataset_id,
type,
f->b->memshape,
f->b->diskshape,
H5P_DEFAULT,
data );
if ( herr < 0 ) return HANDLE_H5D_READ_ERR ( f, name );
herr = H5Dclose ( dataset_id );
if ( herr < 0 ) return HANDLE_H5D_CLOSE_ERR ( f );
hid_t dataset_id;
TRY(
dataset_id = _h5_open_dataset (
f,
b->field_group_id, name
)
);
TRY(
_select_hyperslab_for_reading ( f, dataset_id ) );
TRY(
_h5_read_dataset(
f,
dataset_id,
type,
f->b->memshape,
f->b->diskshape,
H5P_DEFAULT,
data )
);
TRY(
_h5_close_dataset( f, dataset_id )
);
return H5_SUCCESS;
}
@@ -1382,7 +1370,6 @@ _write_field_data (
data,
H5T_NATIVE_DOUBLE,
b->field_group_id,
b->shape,
b->memshape,
b->diskshape );
}
@@ -1509,18 +1496,24 @@ _get_field_info (
hsize_t dims[16];
h5_id_t i, j;
hid_t group_id;
hid_t dataset_id;
h5_err_t herr = _open_block_group ( f );
if ( herr < 0 ) return herr;
hid_t group_id = H5Gopen ( f->b->blockgroup, field_name,
H5P_DEFAULT );
if ( group_id < 0 ) return HANDLE_H5G_OPEN_ERR (
f,
hdf5_get_objname(f->b->blockgroup), field_name );
hid_t dataset_id = H5Dopen ( group_id, "0", H5P_DEFAULT );
if ( dataset_id < 0 ) return HANDLE_H5D_OPEN_ERR ( f, "0" );
TRY(
_open_block_group ( f )
);
TRY(
group_id = _h5_open_group(
f,
f->b->blockgroup,
field_name )
);
TRY(
dataset_id = _h5_open_dataset (
f,
group_id,
"0" )
);
hid_t dataspace_id = H5Dget_space ( dataset_id );
if ( dataspace_id < 0 ) return HANDLE_H5D_GET_SPACE_ERR ( f );
@@ -1537,14 +1530,9 @@ _get_field_info (
H5G_DATASET );
if ( *field_dims < 0 ) return *field_dims;
herr = H5Sclose ( dataspace_id );
if ( herr < 0 ) return HANDLE_H5S_CLOSE_ERR ( f );
herr = H5Dclose ( dataset_id );
if ( herr < 0 ) return HANDLE_H5D_CLOSE_ERR ( f );
herr = H5Gclose ( group_id );
if ( herr < 0 ) return HANDLE_H5G_CLOSE_ERR ( f );
TRY( _h5_close_dataspace( f, dataspace_id ) );
TRY( _h5_close_dataset( f, dataset_id ) );
TRY( _h5_close_group( f, group_id ) );
return H5_SUCCESS;
}
+6 -6
View File
@@ -111,7 +111,7 @@ H5FedGetNumTriangles (
) {
SET_FNAME ( f, __func__ );
h5_id_t cur_level = h5t_get_level( f );
return h5t_get_num_entities ( f, f->myproc, cur_level );
return h5t_get_num_elems ( f, f->myproc, cur_level );
}
/*!
@@ -129,7 +129,7 @@ H5FedGetNumTrianglesTotal (
) {
SET_FNAME ( f, __func__ );
h5_id_t cur_level = h5t_get_level( f );
return h5t_get_num_entities ( f, -1, cur_level );
return h5t_get_num_elems ( f, -1, cur_level );
}
@@ -149,7 +149,7 @@ H5FedGetNumTrianglesCnode (
) {
SET_FNAME ( f, __func__ );
h5_id_t cur_level = h5t_get_level( f );
return h5t_get_num_entities ( f, cnode, cur_level );
return h5t_get_num_elems ( f, cnode, cur_level );
}
/****** TETRAHEDRON statistics routines **************************************/
@@ -169,7 +169,7 @@ H5FedGetNumTetrahedra (
) {
SET_FNAME ( f, __func__ );
h5_id_t cur_level = h5t_get_level( f );
return h5t_get_num_entities ( f, f->myproc, cur_level );
return h5t_get_num_elems ( f, f->myproc, cur_level );
}
h5_size_t
@@ -178,7 +178,7 @@ H5FedGetNumTetrahedraTotal (
) {
SET_FNAME ( f, __func__ );
h5_id_t cur_level = h5t_get_level( f );
return h5t_get_num_entities ( f, -1, cur_level );
return h5t_get_num_elems ( f, -1, cur_level );
}
/*!
@@ -196,7 +196,7 @@ h5_size_t H5FedGetNumTetrahedraCnode (
) {
SET_FNAME ( f, __func__ );
h5_id_t cur_level = h5t_get_level( f );
return h5t_get_num_entities ( f, cnode, cur_level );
return h5t_get_num_elems ( f, cnode, cur_level );
}
+1 -1
View File
@@ -28,7 +28,7 @@ H5FedMapTet2GlobalID (
h5_id_t * const global_vids
) {
SET_FNAME ( f, __func__ );
return h5t_get_global_entity_id ( f, global_vids );
return h5t_get_global_eid ( f, global_vids );
}
+20 -21
View File
@@ -22,24 +22,31 @@
h5_id_t
H5FedAddTetMesh (
h5_file_t * const f,
const h5_size_t num_elems
) {
SET_FNAME ( f, __func__ );
return h5t_open_mesh ( f, -1, H5_OID_TETRAHEDRON );
return h5t_add_mesh ( f, num_elems, H5_OID_TETRAHEDRON );
}
h5_id_t
H5FedAddTriangleMesh (
h5_file_t * const f
h5_file_t * const f,
const h5_size_t num_elems
) {
SET_FNAME ( f, __func__ );
return h5t_open_mesh ( f, -1, H5_OID_TRIANGLE );
return h5t_add_mesh ( f, num_elems, H5_OID_TRIANGLE );
}
/*!
\ingroup h5fed_c_api
Add a new level.
Add a new level with \c num_elems elements. The number of elements must be the
real number of elements to add the level. If you want to refine \c n tetrahedra
\c n*8 elements must be added.
\param[in] f file handle
\param[in] num_elems Number of elements to add.
\return ID of new level.
@@ -53,10 +60,12 @@ H5FedAddTriangleMesh (
*/
h5_id_t
H5FedAddLevel (
h5_file_t * const f /*!< file handle */
h5_file_t * const f, /*!< file handle */
const h5_size_t num_elems
) {
SET_FNAME ( f, __func__ );
return h5t_add_level ( f );
h5_id_t num_vertices = (num_elems>>2)*3; /* this is an upper limit */
return h5t_add_level ( f, num_vertices, num_elems );
}
/*!
@@ -71,7 +80,7 @@ H5FedAddLevel (
h5_id_t
H5FedStoreVertex (
h5_file_t * const f, /*!< file handle */
const h5_id_t id, /*!< id from mesher or -1 */
const h5_id_t vertex_id, /*!< id from mesher or -1 */
const h5_float64_t P[3] /*!< coordinates */
) {
@@ -82,17 +91,7 @@ H5FedStoreVertex (
H5_ERR_INVAL,
"Vertices can be added to level 0 only!" );
}
return h5t_store_vertex ( f, id, P );
}
h5_err_t
H5FedAddNumElements (
h5_file_t * const f, /*!< file handle */
const h5_size_t num /*!< number of additional
tets on current level */
) {
SET_FNAME ( f, __func__ );
return h5t_add_num_elements ( f, num );
return h5t_store_vertex ( f, vertex_id, P );
}
/*!
@@ -121,14 +120,14 @@ H5FedStoreElement (
H5_ERR_INVAL,
"Tetrahedra can be added to level 0 only!" );
}
return h5t_store_element ( f, -1, local_vids );
return h5t_store_elem ( f, -1, local_vids );
}
h5_id_t
H5FedRefineElement (
h5_file_t * const f, /*!< file handle */
const h5_id_t local_cid /*!< local element id */
const h5_id_t local_eid /*!< local element id */
) {
SET_FNAME ( f, __func__ );
return h5t_refine_element ( f, local_cid );
return h5t_refine_elem ( f, local_eid );
}
+12 -4
View File
@@ -21,17 +21,20 @@
h5_id_t
H5FedAddTetMesh (
h5_file_t * const f
h5_file_t * const f,
const h5_size_t num_elems
);
h5_id_t
H5FedAddTriangleMesh (
h5_file_t * const f
h5_file_t * const f,
const h5_size_t num_elems
);
h5_id_t
H5FedAddLevel (
h5_file_t * f
h5_file_t * f,
const h5_size_t num_elems
);
h5_err_t
@@ -56,8 +59,13 @@ H5FedStoreVertex (
h5_id_t
H5FedStoreElement (
h5_file_t * f,
h5_id_t *vertex_ids
const h5_id_t local_vids[]
);
h5_id_t
H5FedRefineElement (
h5_file_t * const f,
const h5_id_t local_eid
);
#endif
+1 -64
View File
@@ -125,7 +125,7 @@ H5PartDefineStepName (
) {
SET_FNAME ( f, __func__ );
return h5_define_stepname_fmt( f, name, width );
return h5_set_stepname_fmt( f, name, width );
}
/*!
@@ -1027,67 +1027,4 @@ H5PartReadParticleStep (
/****************** error handling ******************/
/*!
\ingroup h5part_c_api
\defgroup h5part_c_api_errhandling Error Handling
*/
/*!
\ingroup h5part_c_api_errhandling
Set verbosity level to \c level.
\return \c H5_SUCCESS
*/
h5_int64_t
H5PartSetVerbosityLevel (
const h5_int64_t level
) {
return h5_set_debuglevel ( level );
}
/*!
\ingroup h5part_c_api_errhandling
Set error handler to \c handler.
\return \c H5_SUCCESS
*/
h5_int64_t
H5PartSetErrorHandler (
h5_errorhandler_t handler
) {
return h5_set_errorhandler( handler );
}
/*!
\ingroup h5part_c_api_errhandling
Get current error handler.
\return Pointer to error handler.
*/
h5_errorhandler_t
H5PartGetErrorHandler (
void
) {
return h5_get_errorhandler();
}
/*!
\ingroup h5part_c_api_errhandling
Get last error code.
\return error code
*/
h5_int64_t
H5PartGetErrno (
h5_file_t * const f
) {
return h5_get_errno( f );
}
/*! @} */
+20 -38
View File
@@ -1,10 +1,26 @@
#ifndef _H5Part_H_
#define _H5Part_H_
/*
Header file for declaring the H5Fed application programming
interface (API) in the C language.
Copyright 2006-2007
Paul Scherrer Institut, Villigen, Switzerland;
Benedikt Oswald;
Achim Gsell
All rights reserved.
Authors
Achim Gsell
Warning
This code is under development.
*/
#ifndef __H5Part_H
#define __H5Part_H
#include <stdlib.h>
#include <stdarg.h>
#include <hdf5.h>
#include "h5_core/h5_core.h"
#include "H5.h"
#ifdef PARALLEL_IO
#include <mpi.h>
#endif
@@ -272,40 +288,6 @@ H5PartReadFileAttrib (
void *data
);
h5_int64_t
H5PartSetVerbosityLevel (
const h5_int64_t level
);
h5_int64_t
H5PartSetErrorHandler (
const h5_errorhandler_t handler
);
h5_int64_t
H5PartGetErrno (
h5_file_t *f
);
h5_errorhandler_t
H5PartGetErrorHandler (
void
);
h5_int64_t
H5PartReportErrorHandler (
h5_file_t *f,
const char *fmt,
...
);
h5_int64_t
H5PartAbortErrorHandler (
h5_file_t *f,
const char *fmt,
...
);
#ifdef __cplusplus
}
#endif
+2 -1
View File
@@ -1 +1,2 @@
SUBDIRS = @BINDINGS@
#SUBDIRS = @BINDINGS@
SUBDIRS =