450 lines
11 KiB
C
Executable File
450 lines
11 KiB
C
Executable File
#include "H5Part.h"
|
|
#include "H5PartPrivate.h"
|
|
#include "H5Block.h"
|
|
#include "Underscore.h"
|
|
|
|
#if defined(F77_SINGLE_UNDERSCORE)
|
|
#define F77NAME(a,b) a
|
|
#elif defined(F77_CRAY_UNDERSCORE)
|
|
#define F77NAME(a,b) b
|
|
#elif defined(F77_NO_UNDERSCORE)
|
|
#else
|
|
#error Error, no way to determine how to construct fortran bindings
|
|
#endif
|
|
|
|
#if ! defined(F77_NO_UNDERSCORE)
|
|
|
|
#define h5bl_define3dlayout F77NAME ( \
|
|
h5bl_define3dlayout_, \
|
|
H5BL_DEFINE3DLAYOUT )
|
|
#define h5bl_define3dchunkdims F77NAME ( \
|
|
h5bl_define3dchunkdims_, \
|
|
H5BL_DEFINE3DCHUNKDIMS )
|
|
#define h5bl_get_partition_of_proc F77NAME ( \
|
|
h5bl_get_partition_of_proc_, \
|
|
H5BL_GET_PARTITION_OF_PROC )
|
|
#define h5bl_get_reduced_partition_of_proc F77NAME ( \
|
|
h5bl_get_reduced_partition_of_proc_,\
|
|
H5BL_GET_REDUCED_PARTITION_OF_PROC )
|
|
#define h5bl_get_proc_of F77NAME ( \
|
|
h5bl_get_proc_of_, \
|
|
H5BL_GET_PROC_OF )
|
|
#define h5bl_getnumfields F77NAME ( \
|
|
h5bl_getnumfields_, \
|
|
H5BL_GETNUMFIELDS )
|
|
#define h5bl_getfieldinfo F77NAME ( \
|
|
h5bl_getfieldinfo_, \
|
|
H5BL_GETFIELDINFO )
|
|
#define h5bl_writefieldattrib_string F77NAME ( \
|
|
h5bl_writefieldattrib_string_, \
|
|
H5BL_WRITEFIELDATTRIB_STRING )
|
|
#define h5bl_getnfieldattribs F77NAME ( \
|
|
h5bl_getnfieldattribs_, \
|
|
H5BL_GETNFIELDATTRIBS )
|
|
#define h5bl_getfieldattribinfo F77NAME ( \
|
|
h5bl_getfieldattribinfo_, \
|
|
h5bl_getfieldattribinfo )
|
|
#define h5bl_readfieldattrib_i8 F77NAME ( \
|
|
h5bl_readfieldattrib_i8_, \
|
|
H5BL_READFIELDATTRIB_I8 )
|
|
#define h5bl_readfieldattrib_r8 F77NAME ( \
|
|
h5bl_readfieldattrib_r8_, \
|
|
H5BL_READFIELDATTRIB_R8 )
|
|
#define h5bl_readfieldattrib_string F77NAME ( \
|
|
h5bl_readfieldattrib_string_, \
|
|
H5BL_READFIELDATTRIB_STRING )
|
|
#define h5bl_has_fielddata F77NAME ( \
|
|
h5bl_has_fielddata_, \
|
|
H5BL_HAS_FIELDDATA )
|
|
#define h5bl_3d_set_field_spacing F77NAME ( \
|
|
h5bl_3d_set_field_spacing_, \
|
|
H5BL_3D_SET_FIELD_SPACING )
|
|
#define h5bl_3d_get_field_spacing F77NAME ( \
|
|
h5bl_3d_get_field_spacing_, \
|
|
H5BL_3D_GET_FIELD_SPACING )
|
|
#define h5bl_3d_set_field_origin F77NAME ( \
|
|
h5bl_3d_set_field_origin_, \
|
|
H5BL_3D_SET_FIELD_ORIGIN )
|
|
#define h5bl_3d_get_field_origin F77NAME ( \
|
|
h5bl_3d_get_field_origin_, \
|
|
H5BL_3D_GET_FIELD_origin )
|
|
#endif
|
|
|
|
h5part_int64_t
|
|
h5bl_define3dlayout (
|
|
h5part_int64_t *f,
|
|
const h5part_int64_t *i_start, /*!< start index of i */
|
|
const h5part_int64_t *i_end, /*!< end index of i */
|
|
const h5part_int64_t *j_start, /*!< start index of j */
|
|
const h5part_int64_t *j_end, /*!< end index of j */
|
|
const h5part_int64_t *k_start, /*!< start index of k */
|
|
const h5part_int64_t *k_end /*!< end index of k */
|
|
) {
|
|
|
|
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
|
|
|
return H5BlockDefine3DFieldLayout (
|
|
filehandle,
|
|
*i_start-1, *i_end-1,
|
|
*j_start-1, *j_end-1,
|
|
*k_start-1, *k_end-1 );
|
|
}
|
|
|
|
h5part_int64_t
|
|
h5bl_define3dchunkdims (
|
|
h5part_int64_t *f,
|
|
const h5part_int64_t *i,
|
|
const h5part_int64_t *j,
|
|
const h5part_int64_t *k
|
|
) {
|
|
|
|
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
|
|
|
return H5BlockDefine3DChunkDims ( filehandle, *i, *j, *k );
|
|
}
|
|
|
|
h5part_int64_t
|
|
h5bl_get_partition_of_proc (
|
|
h5part_int64_t *f, /*!< file handle */
|
|
const h5part_int64_t *proc,
|
|
h5part_int64_t *i_start, /*!< start index of i */
|
|
h5part_int64_t *i_end, /*!< end index of i */
|
|
h5part_int64_t *j_start, /*!< start index of j */
|
|
h5part_int64_t *j_end, /*!< end index of j */
|
|
h5part_int64_t *k_start, /*!< start index of k */
|
|
h5part_int64_t *k_end /*!< end index of k */
|
|
) {
|
|
|
|
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
|
|
|
h5part_int64_t herr = H5Block3dGetPartitionOfProc (
|
|
filehandle,
|
|
*proc,
|
|
i_start, i_end, j_start, j_end, k_start, k_end );
|
|
if ( herr < 0 ) return herr;
|
|
|
|
(*i_start)++;
|
|
(*i_end)++;
|
|
(*j_start)++;
|
|
(*j_end)++;
|
|
(*k_start)++;
|
|
(*k_end)++;
|
|
|
|
return H5PART_SUCCESS;
|
|
}
|
|
|
|
h5part_int64_t
|
|
h5bl_get_reduced_partition_of_proc (
|
|
h5part_int64_t *f,
|
|
const h5part_int64_t *proc,
|
|
h5part_int64_t *i_start,
|
|
h5part_int64_t *i_end,
|
|
h5part_int64_t *j_start,
|
|
h5part_int64_t *j_end,
|
|
h5part_int64_t *k_start,
|
|
h5part_int64_t *k_end
|
|
) {
|
|
|
|
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
|
|
|
h5part_int64_t herr = H5Block3dGetReducedPartitionOfProc (
|
|
filehandle,
|
|
*proc,
|
|
i_start, i_end, j_start, j_end, k_start, k_end );
|
|
if ( herr < 0 ) return herr;
|
|
|
|
(*i_start)++;
|
|
(*i_end)++;
|
|
(*j_start)++;
|
|
(*j_end)++;
|
|
(*k_start)++;
|
|
(*k_end)++;
|
|
|
|
return H5PART_SUCCESS;
|
|
}
|
|
|
|
h5part_int64_t
|
|
h5bl_get_proc_of (
|
|
h5part_int64_t *f,
|
|
const h5part_int64_t *i,
|
|
const h5part_int64_t *j,
|
|
const h5part_int64_t *k
|
|
) {
|
|
|
|
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
|
|
|
return H5Block3dGetProcOf ( filehandle, (*i)-1, (*j)-1, (*k)-1 );
|
|
}
|
|
|
|
h5part_int64_t
|
|
h5bl_getnumfields (
|
|
h5part_int64_t *f /*!< file handle */
|
|
) {
|
|
|
|
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
|
|
|
return H5BlockGetNumFields ( filehandle );
|
|
}
|
|
|
|
h5part_int64_t
|
|
h5bl_getfieldinfo (
|
|
h5part_int64_t *f,
|
|
const h5part_int64_t *idx,
|
|
char *field_name,
|
|
h5part_int64_t *grid_rank,
|
|
h5part_int64_t *grid_dims,
|
|
h5part_int64_t *field_dims,
|
|
h5part_int64_t *type,
|
|
const int l_field_name
|
|
) {
|
|
|
|
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
|
|
|
h5part_int64_t herr = H5BlockGetFieldInfo (
|
|
filehandle, *idx, field_name, l_field_name,
|
|
grid_rank, grid_dims, field_dims, type );
|
|
_H5Part_strc2for ( field_name, l_field_name );
|
|
return herr;
|
|
}
|
|
|
|
h5part_int64_t
|
|
h5bl_writefieldattrib_string (
|
|
h5part_int64_t *f,
|
|
const char *field_name,
|
|
const char *attrib_name,
|
|
const char *attrib_value,
|
|
const int l_field_name,
|
|
const int l_attrib_name,
|
|
const int l_attrib_value
|
|
) {
|
|
|
|
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
|
|
|
char *field_name2 =_H5Part_strdupfor2c ( field_name, l_field_name );
|
|
char *attrib_name2=_H5Part_strdupfor2c ( attrib_name, l_attrib_name );
|
|
char *attrib_value2=_H5Part_strdupfor2c( attrib_value,l_attrib_value );
|
|
|
|
h5part_int64_t herr = H5BlockWriteFieldAttribString (
|
|
filehandle, field_name2, attrib_name2, attrib_value2 );
|
|
|
|
free ( field_name2 );
|
|
free ( attrib_name2 );
|
|
free ( attrib_value2 );
|
|
return herr;
|
|
}
|
|
|
|
|
|
h5part_int64_t
|
|
h5bl_getnfieldattribs (
|
|
h5part_int64_t *f,
|
|
const char *field_name,
|
|
const int l_field_name
|
|
) {
|
|
|
|
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
|
|
|
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
|
|
|
h5part_int64_t herr = H5BlockGetNumFieldAttribs (
|
|
filehandle, field_name2 );
|
|
|
|
free ( field_name2 );
|
|
return herr;
|
|
}
|
|
|
|
h5part_int64_t
|
|
h5bl_getfieldattribinfo (
|
|
h5part_int64_t *f,
|
|
const char *field_name,
|
|
const h5part_int64_t *attrib_idx,
|
|
char *attrib_name,
|
|
h5part_int64_t *attrib_nelem,
|
|
const int l_field_name,
|
|
const int l_attrib_name
|
|
) {
|
|
|
|
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
|
|
|
h5part_int64_t attrib_type;
|
|
|
|
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
|
|
|
h5part_int64_t herr = H5BlockGetFieldAttribInfo (
|
|
filehandle, field_name2, *attrib_idx,
|
|
attrib_name, l_attrib_name,
|
|
&attrib_type,
|
|
attrib_nelem );
|
|
|
|
_H5Part_strc2for ( attrib_name, l_attrib_name );
|
|
|
|
free ( field_name2 );
|
|
return herr;
|
|
}
|
|
|
|
|
|
h5part_int64_t
|
|
h5bl_readfieldattrib_i8 (
|
|
h5part_int64_t *f,
|
|
const char *field_name,
|
|
const char *attrib_name,
|
|
h5part_int64_t *attrib_value,
|
|
const int l_field_name,
|
|
const int l_attrib_name
|
|
) {
|
|
|
|
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
|
|
|
char *field_name2 =_H5Part_strdupfor2c ( field_name, l_field_name );
|
|
char *attrib_name2=_H5Part_strdupfor2c ( attrib_name, l_attrib_name );
|
|
|
|
h5part_int64_t herr = H5BlockReadFieldAttrib (
|
|
filehandle, field_name2, attrib_name2, attrib_value );
|
|
|
|
free ( field_name2 );
|
|
free ( attrib_name2 );
|
|
return herr;
|
|
}
|
|
|
|
h5part_int64_t
|
|
h5bl_readfieldattrib_r8 (
|
|
h5part_int64_t *f,
|
|
const char *field_name,
|
|
const char *attrib_name,
|
|
h5part_float64_t *attrib_value,
|
|
const int l_field_name,
|
|
const int l_attrib_name
|
|
) {
|
|
|
|
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
|
|
|
char *field_name2 =_H5Part_strdupfor2c ( field_name, l_field_name );
|
|
char *attrib_name2=_H5Part_strdupfor2c ( attrib_name, l_attrib_name );
|
|
|
|
h5part_int64_t herr = H5BlockReadFieldAttrib (
|
|
filehandle, field_name2, attrib_name2, attrib_value );
|
|
|
|
free ( field_name2 );
|
|
free ( attrib_name2 );
|
|
return herr;
|
|
}
|
|
|
|
h5part_int64_t
|
|
h5bl_readfieldattrib_string (
|
|
h5part_int64_t *f,
|
|
const char *field_name,
|
|
const char *attrib_name,
|
|
char *attrib_value,
|
|
const int l_field_name,
|
|
const int l_attrib_name,
|
|
const int l_attrib_value
|
|
) {
|
|
|
|
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
|
|
|
char *field_name2 =_H5Part_strdupfor2c ( field_name, l_field_name );
|
|
char *attrib_name2=_H5Part_strdupfor2c ( attrib_name, l_attrib_name );
|
|
|
|
h5part_int64_t herr = H5BlockReadFieldAttrib (
|
|
filehandle, field_name2, attrib_name2, attrib_value );
|
|
|
|
_H5Part_strc2for ( attrib_value, l_attrib_value );
|
|
|
|
free ( field_name2 );
|
|
free ( attrib_name2 );
|
|
return herr;
|
|
}
|
|
|
|
h5part_int64_t
|
|
h5bl_has_fielddata (
|
|
h5part_int64_t *f
|
|
) {
|
|
|
|
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
|
|
|
return H5BlockHasFieldData ( filehandle );
|
|
}
|
|
|
|
h5part_int64_t
|
|
h5b_3d_get_field_spacing (
|
|
h5part_int64_t *f,
|
|
const char *field_name,
|
|
h5part_float64_t *x,
|
|
h5part_float64_t *y,
|
|
h5part_float64_t *z,
|
|
const int l_field_name
|
|
) {
|
|
|
|
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
|
|
|
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
|
|
|
h5part_int64_t herr = H5Block3dGetFieldSpacing (
|
|
filehandle, field_name2, x, y, z );
|
|
|
|
free ( field_name2 );
|
|
return herr;
|
|
}
|
|
|
|
h5part_int64_t
|
|
h5b_3d_set_field_spacing (
|
|
h5part_int64_t *f,
|
|
const char *field_name,
|
|
const h5part_float64_t *x,
|
|
const h5part_float64_t *y,
|
|
const h5part_float64_t *z,
|
|
const int l_field_name
|
|
) {
|
|
|
|
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
|
|
|
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
|
|
|
h5part_int64_t herr = H5Block3dSetFieldSpacing (
|
|
filehandle, field_name2, *x, *y, *z );
|
|
|
|
free ( field_name2 );
|
|
return herr;
|
|
}
|
|
|
|
h5part_int64_t
|
|
h5b_3d_get_field_origin (
|
|
h5part_int64_t *f,
|
|
const char *field_name,
|
|
h5part_float64_t *x,
|
|
h5part_float64_t *y,
|
|
h5part_float64_t *z,
|
|
const int l_field_name
|
|
) {
|
|
|
|
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
|
|
|
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
|
|
|
h5part_int64_t herr = H5Block3dGetFieldOrigin (
|
|
filehandle, field_name2, x, y, z );
|
|
|
|
free ( field_name2 );
|
|
return herr;
|
|
}
|
|
|
|
h5part_int64_t
|
|
h5b_3d_set_field_origin (
|
|
h5part_int64_t *f,
|
|
const char *field_name,
|
|
const h5part_float64_t *x,
|
|
const h5part_float64_t *y,
|
|
const h5part_float64_t *z,
|
|
const int l_field_name
|
|
) {
|
|
|
|
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
|
|
|
|
char *field_name2 = _H5Part_strdupfor2c ( field_name, l_field_name );
|
|
|
|
h5part_int64_t herr = H5Block3dSetFieldOrigin (
|
|
filehandle, field_name2, *x, *y, *z );
|
|
|
|
free ( field_name2 );
|
|
return herr;
|
|
}
|