diff --git a/src/Fortran/H5.c b/src/Fortran/H5.c index 0c6817b..f12ffe2 100644 --- a/src/Fortran/H5.c +++ b/src/Fortran/H5.c @@ -13,298 +13,113 @@ #include "h5core/h5_debug.h" #include "h5core/h5_model.h" -/* file handling interface */ -static inline h5_int64_t -open_file ( - const char *name, - const int l_name, - h5_int32_t flags, - MPI_Comm ccomm, - h5_size_t align +#define h5_createprop_file F77_NAME( \ + h5_createprop_file, \ + h5_createprop_file_, \ + H5_CREATEPROP_FILE) +h5_int64_t +h5_createprop_file ( + void ) { - char *name2 = h5_strdupfor2c ( name, l_name ); - h5_file_t f = h5_open_file ( name2, flags, ccomm, align ); - free ( name2 ); - return (h5_int64_t)f; + H5_API_ENTER (h5_int64_t, "%s", ""); + H5_API_RETURN ((h5_int64_t)h5_create_prop (H5_PROP_FILE)); } -#define h5_openr F77_NAME( \ - h5_openr, \ - h5_openr_, \ - H5_OPENR) +#define h5_setprop_filempio F77_NAME( \ + h5_setprop_filempio, \ + h5_setprop_filempio_, \ + H5_SETPROP_FILEMPIO) h5_int64_t -h5_openr ( - const char *file_name, - const int l_file_name - ) { - H5_API_ENTER (h5_int64_t, "file_name='%s'", - file_name); - H5_API_RETURN (open_file (file_name, l_file_name, H5_O_RDONLY, 0, 0)); +h5_setprop_filempio ( + h5_int64_t* _prop, + MPI_Fint* _comm + ) { + H5_API_ENTER (h5_int64_t, + "prop=%lld, comm=%lld", + (long long int)*_prop, (long long int)*_comm); + h5_prop_t prop = (h5_prop_t)*_prop; + MPI_Comm comm = MPI_Comm_f2c (*_comm); + H5_API_RETURN ((h5_int64_t)h5_set_prop_file_mpio (prop, &comm)); } -#define h5_openw F77_NAME( \ - h5_openw, \ - h5_openw_, \ - H5_OPENW) +#define h5_setprop_filealign F77_NAME ( \ + h5_setprop_filealign, \ + h5_setprop_filealign_, \ + H5_SETPROP_FILEALIGN) h5_int64_t -h5_openw ( - const char *file_name, - const int l_file_name - ) { - H5_API_ENTER (h5_int64_t, "file_name='%s'", - file_name); - H5_API_RETURN (open_file (file_name, l_file_name, H5_O_WRONLY, 0, 0)); +h5_setprop_filealign ( + h5_int64_t* _prop, + h5_int64_t* align + ) { + H5_API_ENTER (h5_err_t, + "prop=%lld, align=%lld", + (long long int)*_prop, (long long int)*align); + h5_prop_t prop = (h5_prop_t)*_prop; + H5_API_RETURN (h5_set_prop_file_align (prop, *align)); } -#define h5_opena F77_NAME( \ - h5_opena, \ - h5_opena_, \ - H5_OPENA) +#define h5_setprop_filethrottle F77_NAME ( \ + h5_setprop_filethrottle, \ + h5_setprop_filethrottle_, \ + H5_SETPROP_FILETHROTTLE) + h5_int64_t -h5_opena ( - const char *file_name, - const int l_file_name - ) { - H5_API_ENTER (h5_int64_t, "file_name='%s'", - file_name); - H5_API_RETURN (open_file (file_name, l_file_name, H5_O_APPEND, 0, 0)); +h5_setprop_filethrottle ( + h5_int64_t* _prop, + h5_int64_t* throttle + ) { + H5_API_ENTER ( + h5_err_t, + "prop=%lld, throttle=%lld", + (long long int)*_prop, (long long int)*throttle); + h5_prop_t prop = (h5_prop_t)*_prop; + H5_API_RETURN (h5_set_prop_file_throttle (prop, *throttle)); } -#define h5_openr_align F77_NAME( \ - h5_openr_align, \ - h5_openr_align_, \ - H5_OPENR_ALIGN) +#define h5_closeprop F77_NAME ( \ + h5_closeprop, \ + h5_closeprop_, \ + H5_CLOSEPROP) h5_int64_t -h5_openr_align ( - const char *file_name, - const h5_int64_t *align, - const int l_file_name - ) { - H5_API_ENTER (h5_int64_t, "file_name='%s', align=%llu", - file_name, (long long unsigned)align); - H5_API_RETURN (open_file (file_name, l_file_name, H5_O_RDONLY, 0, *align)); +h5_closeprop ( + h5_int64_t* _prop + ) { + H5_API_ENTER (h5_err_t, + "prop=%lld", + (long long int)*_prop); + h5_prop_t prop = (h5_prop_t)*_prop; + H5_API_RETURN (h5_close_prop (prop)); } -#define h5_openw_align F77_NAME( \ - h5_openw_align, \ - h5_openw_align_, \ - H5_OPENW_ALIGN) +#define h5_openfile F77_NAME( \ + h5_openfile, \ + h5_openfile_, \ + H5_OPENFILE) h5_int64_t -h5_openw_align ( - const char *file_name, - const h5_int64_t *align, - const int l_file_name - ) { - H5_API_ENTER (h5_int64_t, "file_name='%s', align=%llu", - file_name, (long long unsigned)align); - H5_API_RETURN (open_file (file_name, l_file_name, H5_O_WRONLY, 0, *align)); +h5_openfile ( + const char* _fname, + h5_int64_t* _mode, + h5_int64_t* _props, + const int _len_fname + ) { + int len_fname = strlenf (_fname, _len_fname); + H5_API_ENTER (h5_int64_t, + "fname = %*s, mode=%lld, props=%lld", + len_fname, _fname, (long long int)*_mode, (long long int)*_props); + char* fname = h5_strdupfor2c (_fname, _len_fname); + h5_int64_t mode = *_mode; + h5_prop_t props = (h5_prop_t)*_props; + h5_file_t f = h5_open_file2 (fname, mode, props); + free (fname); + H5_API_RETURN ((h5_int64_t)f); } -#define h5_opena_align F77_NAME( \ - h5_opena_align, \ - h5_opena_align_, \ - H5_OPENA_ALIGN) +#define h5_closefile F77_NAME( \ + h5_closefile, \ + h5_closefile_, \ + H5_CLOSEFILE) h5_int64_t -h5_opena_align ( - const char *file_name, - const h5_int64_t *align, - const int l_file_name - ) { - H5_API_ENTER (h5_int64_t, "file_name='%s', align=%llu", - file_name, (long long unsigned)align); - H5_API_RETURN (open_file (file_name, l_file_name, H5_O_APPEND, 0, *align)); -} - -#ifdef PARALLEL_IO -h5_int32_t -flagsfor2c ( - const char* flags, - const int l_flags - ) { - if (flags == NULL) - return 0; - - h5_int32_t fbits = 0; - char* flags2 = h5_strdupfor2c (flags, l_flags); - - flags2 = strtok (flags2, ","); - while (flags != NULL) { - if (strcmp (flags2, "vfd_mpiposix") == 0) - fbits |= H5_VFD_MPIPOSIX; - else if (strcmp (flags2, "vfd_core") == 0) - fbits |= H5_VFD_CORE; - else if (strcmp (flags2, "vfd_mpio_ind") == 0) - fbits |= H5_VFD_MPIIO_IND; - else if (strcmp (flags2, "fs_lustre") == 0) - fbits |= H5_FS_LUSTRE; - else { - // :FIXME: ignore unknown strings!? - } - flags2 = strtok (NULL, ","); - } - free (flags2); - return fbits; -} - -static inline h5_int64_t -open_file_par ( - const char* file_name, - const int l_file_name, - MPI_Fint* fcomm, - const h5_int32_t mode, - const char* flags, - const int l_flags, - h5_int64_t align - ) { - return open_file ( - file_name, l_file_name, - mode | flagsfor2c (flags, l_flags), - MPI_Comm_f2c (*fcomm), - align); -} - -#define h5_openr_par F77_NAME( \ - h5_openr_par, \ - h5_openr_par_, \ - H5_OPENR_PAR) -h5_int64_t -h5_openr_par ( - const char *file_name, - MPI_Fint *fcomm, - const int l_file_name - ) { - H5_API_ENTER (h5_int64_t, "file_name='%*s', fcomm=%d", - l_file_name, file_name, *fcomm); - H5_API_RETURN ( - open_file_par ( - file_name, l_file_name, - fcomm, - H5_O_RDONLY, - NULL, 0, - 0)); -} - -#define h5_openw_par F77_NAME( \ - h5_openw_par, \ - h5_openw_par_, \ - H5_OPENW_PAR) -h5_int64_t -h5_openw_par ( - const char* file_name, - MPI_Fint* fcomm, - const int l_file_name - ) { - H5_API_ENTER (h5_int64_t, "file_name='%*s', fcomm=%d", - l_file_name, file_name, *fcomm); - H5_API_RETURN ( - open_file_par ( - file_name, l_file_name, - fcomm, - H5_O_WRONLY, - NULL, 0, - 0)); -} - -#define h5_opena_par F77_NAME( \ - h5_opena_par, \ - h5_opena_par_, \ - H5_OPENA_PAR) -h5_int64_t -h5_opena_par ( - const char* file_name, - MPI_Fint* fcomm, - const int l_file_name - ) { - H5_API_ENTER (h5_int64_t, "file_name='%*s', fcomm=%d", - l_file_name, file_name, *fcomm); - H5_API_RETURN ( - open_file_par ( - file_name, l_file_name, - fcomm, - H5_O_APPEND, - NULL, 0, - 0)); -} - -#define h5_openr_par_align F77_NAME( \ - h5_openr_par_align, \ - h5_openr_par_align_, \ - H5_OPENR_PAR_ALIGN) -h5_int64_t -h5_openr_par_align ( - const char *file_name, - MPI_Fint *fcomm, - const h5_int64_t *align, - const char *flags, - const int l_file_name, - const int l_flags - ) { - H5_API_ENTER (h5_int64_t, "file_name='%*s', fcomm=%d, flags=%s, align=%lld", - l_file_name, file_name, *fcomm, flags, (long long)align); - H5_API_RETURN ( - open_file_par ( - file_name, l_file_name, - fcomm, - H5_O_RDONLY, - flags, l_flags, - *align)); -} - -#define h5_openw_par_align F77_NAME( \ - h5_openw_par_align, \ - h5_openw_par_align_, \ - H5_OPENW_PAR_ALIGN) -h5_int64_t -h5_openw_par_align ( - const char *file_name, - MPI_Fint *fcomm, - const h5_int64_t *align, - const char *flags, - const int l_file_name, - const int l_flags - ) { - H5_API_ENTER (h5_int64_t, "file_name='%*s', fcomm=%d, flags=%s, align=%lld", - l_file_name, file_name, *fcomm, flags, (long long)align); - H5_API_RETURN ( - open_file_par ( - file_name, l_file_name, - fcomm, - H5_O_WRONLY, - flags, l_flags, - *align)); -} - -#define h5_opena_par_align F77_NAME( \ - h5_opena_par_align, \ - h5_opena_par_align_, \ - H5_OPENA_PAR_ALIGN) -h5_int64_t -h5_opena_par_align ( - const char *file_name, - MPI_Fint *fcomm, - const h5_int64_t *align, - const char *flags, - const int l_file_name, - const int l_flags - ) { - H5_API_ENTER (h5_int64_t, "file_name='%*s', fcomm=%d, flags=%s, align=%lld", - l_file_name, file_name, *fcomm, flags, (long long)align); - H5_API_RETURN ( - open_file_par ( - file_name, l_file_name, - fcomm, - H5_O_APPEND, - flags, l_flags, - *align)); -} -#endif - -#define h5_close F77_NAME( \ - h5_close, \ - h5_close_, \ - H5_CLOSE) -h5_int64_t -h5_close ( +h5_closefile ( const h5_int64_t *f ) { h5_file_t fh = h5_filehandlefor2c(f); @@ -312,6 +127,45 @@ h5_close ( H5_API_RETURN (h5_close_file (fh)); } +#define h5_checkfile F77_NAME( \ + h5_checkfile, \ + h5_checkfile_, \ + H5_CHECKFILE) +h5_int64_t +h5_checkfile ( + const h5_int64_t *f + ) { + h5_file_t fh = h5_filehandlefor2c(f); + H5_API_ENTER (h5_int64_t, "f=%p", (h5_file_p)fh); + H5_API_RETURN (h5_check_filehandle (fh)); +} + +#define h5_flushfile F77_NAME( \ + h5_flushfile, \ + h5_flushfile_, \ + H5_FLUSHFILE) +h5_int64_t +h5_flushfile ( + const h5_int64_t* f + ) { + h5_file_t fh = h5_filehandlefor2c(f); + H5_API_ENTER (h5_int64_t, "f=%p", (h5_file_p)fh); + H5_API_RETURN (h5_flush_file (fh)); +} + +#define h5_flushstep F77_NAME( \ + h5_flushstep, \ + h5_flushstep_, \ + H5_FLUSHSTEP) +h5_int64_t +h5_flushstep ( + const h5_int64_t* f + ) { + h5_file_t fh = h5_filehandlefor2c(f); + H5_API_ENTER (h5_int64_t, "f=%p", (h5_file_p)fh); + H5_API_RETURN (h5_flush_step (fh)); +} + #define h5_finalize F77_NAME( \ h5_finalize, \ h5_finalize_, \ @@ -324,62 +178,6 @@ h5_finalize ( H5_API_RETURN (h5_close_hdf5()); } -#define h5_check F77_NAME( \ - h5_check, \ - h5_check_, \ - H5_CHECK) -h5_int64_t -h5_check ( - const h5_int64_t *f - ) { - - h5_file_t fh = h5_filehandlefor2c(f); - H5_API_ENTER (h5_int64_t, "f=%p", (h5_file_p)fh); - H5_API_RETURN (h5_check_filehandle (fh)); -} - -/* H5hut data model */ -#define h5_setstep F77_NAME(  \ - h5_setstep, \ - h5_setstep_, \ - H5_SETSTEP) -h5_int64_t -h5_setstep ( - const h5_int64_t *f, - h5_int64_t *step ) { - - h5_file_t fh = h5_filehandlefor2c(f); - H5_API_ENTER (h5_int64_t, "f=%p, step=%lld", (h5_file_p)fh, (long long)*step); - H5_API_RETURN (h5_set_step (fh, (*step)-1)); -} - -#define h5_getstep F77_NAME( \ - h5_getstep, \ - h5_getstep_, \ - H5_GETSTEP) -h5_int64_t -h5_getstep ( - const h5_int64_t *f - ) { - - h5_file_t fh = h5_filehandlefor2c(f); - H5_API_ENTER (h5_int64_t, "f=%p", (h5_file_p)fh); - H5_API_RETURN (h5_get_step (fh) + 1); -} - -#define h5_getnsteps F77_NAME( \ - h5_getnsteps, \ - h5_getnsteps_, \ - H5_GETNSTEPS) -h5_int64_t -h5_getnsteps ( - const h5_int64_t *f - ) { - - h5_file_t fh = h5_filehandlefor2c(f); - H5_API_ENTER (h5_int64_t, "f=%p", (h5_file_p)fh); - H5_API_RETURN (h5_get_num_steps (fh)); -} /* debug output */ @@ -396,3 +194,17 @@ h5_set_verbosity_level ( H5_API_RETURN(h5_set_debuglevel (*level)); } +#define h5_abort_on_error F77_NAME( \ + h5_abort_on_error, \ + h5_abort_on_error_, \ + H5_ABORT_ON_ERROR) +h5_int64_t +h5_abort_on_error ( + void + ) { + H5_API_ENTER (h5_int64_t, "%s", ""); + h5_set_debuglevel (1); + H5_API_RETURN (h5_set_errorhandler (h5_abort_errorhandler)); +} + + diff --git a/src/Fortran/H5Block_attribs.c b/src/Fortran/H5Block_attribs.c index ddfd4ce..9d1ce35 100644 --- a/src/Fortran/H5Block_attribs.c +++ b/src/Fortran/H5Block_attribs.c @@ -69,7 +69,7 @@ h5bl_getfieldattribinfo ( char *field_name2 = h5_strdupfor2c ( field_name, l_field_name ); h5_int64_t attrib_type; - h5_int64_t herr = h5b_get_field_attrib_info ( + h5_int64_t herr = h5b_get_field_attrib_info_by_idx ( f, field_name2, *attrib_idx - 1, attrib_name, l_attrib_name, diff --git a/src/Fortran/H5_attribs.c b/src/Fortran/H5_attribs.c index 4d11314..00a9b1c 100644 --- a/src/Fortran/H5_attribs.c +++ b/src/Fortran/H5_attribs.c @@ -39,9 +39,9 @@ h5_getnfileattribs ( } #define h5_getfileattribinfo F77_NAME( \ - h5_getfileattribinfo, \ - h5_getfileattribinfo_, \ - H5_GETFILEATTRIBINFO) + h5_getfileattribinfo, \ + h5_getfileattribinfo_, \ + H5_GETFILEATTRIBINFO) h5_int64_t h5_getfileattribinfo ( const h5_int64_t* const fh, @@ -61,7 +61,7 @@ h5_getfileattribinfo ( (h5_file_p)fh, (long long)*attrib_idx, attrib_name, attrib_type, attrib_nelem); - h5_int64_t h5err = h5_get_file_attrib_info ( + h5_int64_t h5err = h5_get_file_attrib_info_by_idx ( f, *attrib_idx - 1, attrib_name, l_attrib_name, @@ -72,6 +72,36 @@ h5_getfileattribinfo ( H5_API_RETURN (h5err); } +#define h5_getfileattribinfo_by_name F77_NAME( \ + h5_getfileattribinfo_by_name, \ + h5_getfileattribinfo_by_name_, \ + H5_GETFILEATTRIBINFO_BY_NAME) +h5_int64_t +h5_getfileattribinfo_by_name ( + const h5_int64_t* const fh, + const char* const _name, + h5_int64_t* const _type, + h5_int64_t* const _nelem, + const int l_name + ) { + h5_file_t f = h5_filehandlefor2c(fh); + H5_API_ENTER (h5_int64_t, + "fh=%p, " + "name=%.*s, " + "type=%p, " + "nelem=%p", + (h5_file_p)fh, + l_name, _name, _type, _nelem); + char* name = h5_strdupfor2c (_name, l_name); + h5_int64_t h5err = h5_get_file_attrib_info_by_name ( + f, + name, + _type, + (h5_size_t*)_nelem); + convert_type2for (_type); + H5_API_RETURN (h5err); +} + /* _ __ (_) / /__ @@ -309,8 +339,8 @@ h5_writefileattrib_i4 ( ) { h5_file_t f = h5_filehandlefor2c(fh); H5_API_ENTER (h5_int64_t, - "fh=%p, name='%.*s', buffer=%p, nelem=%lld", - (h5_file_p)f, l_name, name, buffer, (long long)*nelem); + "fh=%p, name='%.*s', buffer[12]=%d, %x, %x, nelem=%lld", + (h5_file_p)f, l_name, name, buffer[12], buffer[13], buffer[14], (long long)*nelem); H5_API_RETURN (write_file_attrib( f, name, l_name, @@ -386,7 +416,7 @@ h5_getstepattribinfo ( (h5_file_p)f, (long long)*attrib_idx, attrib_name, attrib_type, attrib_nelem); - h5_int64_t h5err = h5_get_step_attrib_info ( + h5_int64_t h5err = h5_get_step_attrib_info_by_idx ( f, *attrib_idx - 1, attrib_name, l_attrib_name, @@ -397,6 +427,36 @@ h5_getstepattribinfo ( H5_API_RETURN (h5err); } +#define h5_getstepattribinfo_by_name F77_NAME( \ + h5_getstepattribinfo_by_name, \ + h5_getstepattribinfo_by_name_, \ + H5_GETSTEPATTRIBINFO_BY_NAME) +h5_int64_t +h5_getstepattribinfo_by_name ( + const h5_int64_t* const fh, + const char* const _name, + h5_int64_t* const _type, + h5_int64_t* const _nelem, + const int l_name + ) { + h5_file_t f = h5_filehandlefor2c(fh); + H5_API_ENTER (h5_int64_t, + "fh=%p, " + "name=%.*s, " + "type=%p, " + "nelem=%p", + (h5_file_p)fh, + l_name, _name, _type, _nelem); + char* name = h5_strdupfor2c (_name, l_name); + h5_int64_t h5err = h5_get_step_attrib_info_by_name ( + f, + name, + _type, + (h5_size_t*)_nelem); + convert_type2for (_type); + H5_API_RETURN (h5err); +} + static inline h5_int64_t write_step_attrib ( const h5_file_t fh, diff --git a/src/Fortran/H5_model.c b/src/Fortran/H5_model.c new file mode 100644 index 0000000..0dad451 --- /dev/null +++ b/src/Fortran/H5_model.c @@ -0,0 +1,76 @@ +/* + Copyright (c) 2006-2013, The Regents of the University of California, + through Lawrence Berkeley National Laboratory (subject to receipt of any + required approvals from the U.S. Dept. of Energy) and the Paul Scherrer + Institut (Switzerland). All rights reserved. + + License: see file COPYING in top level of source distribution. +*/ + +#include "h5_private.h" + +#include "h5core/h5.h" +#include "h5core/h5_debug.h" +#include "h5core/h5_model.h" + +/* H5hut data model */ + +#define h5_hasstep F77_NAME( \ + h5_hasstep, \ + h5_hasstep_, \ + H5_HASSTEP) +int +h5_hasstep ( + const h5_int64_t* f, + const h5_int64_t* stepno + ) { + + h5_file_t fh = h5_filehandlefor2c(f); + H5_API_ENTER ( + int, + "f=%p, stepno=%lld", + (h5_file_p)fh, (long long int)stepno); + H5_API_RETURN (h5_has_step (fh, *stepno)); +} + +#define h5_setstep F77_NAME( \ + h5_setstep, \ + h5_setstep_, \ + H5_SETSTEP) +h5_int64_t +h5_setstep ( + const h5_int64_t *f, + h5_int64_t *step ) { + + h5_file_t fh = h5_filehandlefor2c(f); + H5_API_ENTER (h5_int64_t, "f=%p, step=%lld", (h5_file_p)fh, (long long)*step); + H5_API_RETURN (h5_set_step (fh, *step)); +} + +#define h5_getstep F77_NAME( \ + h5_getstep, \ + h5_getstep_, \ + H5_GETSTEP) +h5_int64_t +h5_getstep ( + const h5_int64_t *f + ) { + + h5_file_t fh = h5_filehandlefor2c(f); + H5_API_ENTER (h5_int64_t, "f=%p", (h5_file_p)fh); + H5_API_RETURN (h5_get_step (fh) + 1); +} + +#define h5_getnsteps F77_NAME( \ + h5_getnsteps, \ + h5_getnsteps_, \ + H5_GETNSTEPS) +h5_int64_t +h5_getnsteps ( + const h5_int64_t *f + ) { + + h5_file_t fh = h5_filehandlefor2c(f); + H5_API_ENTER (h5_int64_t, "f=%p", (h5_file_p)fh); + H5_API_RETURN (h5_get_num_steps (fh)); +} diff --git a/src/Fortran/Makefile.am b/src/Fortran/Makefile.am index 2547af3..2d03c26 100644 --- a/src/Fortran/Makefile.am +++ b/src/Fortran/Makefile.am @@ -2,15 +2,17 @@ if ENABLE_FORTRAN AM_CPPFLAGS += -I$(top_srcdir)/src/include -F90_FILES = \ - H5F.f90 \ - H5_constF.f90 \ - H5_attribsF.f90 \ - H5PartF.f90 \ - H5Part_ioF.f90 \ - H5BlockF.f90 \ - H5Block_attribsF.f90 \ - H5Block_ioF.f90 +F90_FILES = \ + $(top_srcdir)/src/include/H5hut.f90 \ + $(top_srcdir)/src/include/H5.f90 \ + $(top_srcdir)/src/include/H5_const.f90 \ + $(top_srcdir)/src/include/H5_attribs.f90 \ + $(top_srcdir)/src/include/H5_model.f90 \ + $(top_srcdir)/src/include/H5Part.f90 \ + $(top_srcdir)/src/include/H5Part_io.f90 \ + $(top_srcdir)/src/include/H5Block.f90 \ + $(top_srcdir)/src/include/H5Block_attribs.f90 \ + $(top_srcdir)/src/include/H5Block_io.f90 EXTRA_HEADERS = @@ -20,16 +22,18 @@ EXTRA_DIST = \ $(F90_FILES) nodist_include_HEADERS = \ - $(top_srcdir)/src/include/H5hutF.h + $(top_srcdir)/src/include/H5hut.f lib_LTLIBRARIES = libH5hutF.la include_HEADERS = \ - ../include/H5hutF.h + $(F90_FILES) \ + $(top_srcdir)/src/include/H5hut.f libH5hutF_la_SOURCES = \ H5.c \ H5_attribs.c \ + H5_model.c \ H5Part.c \ H5Part_io.c \ H5Block.c \ @@ -37,17 +41,17 @@ libH5hutF_la_SOURCES = \ H5Block_io.c libH5hutF_la_DEPENDENCIES = \ - $(top_srcdir)/src/include/H5hutF.h + $(top_srcdir)/src/include/H5hut.f libH5hutF_la_LDFLAGS = -version-info 2:0:0 -rpath '$(libdir)' -$(top_srcdir)/src/include/H5hutF.h: $(F90_FILES) - awk '/INTEGER\*8 :: /{print "\t" $$0}' $^ >$@ - awk '/PARAMETER /{print "\t" $$0}' $^ >> $@ - awk '/INTEGER\*8 FUNCTION/{print "\t" $$1 " " $$3}' $^ >>$@ +$(top_srcdir)/src/include/H5hut.f: $(F90_FILES) + awk '/INTEGER\*8 :: /{print " " $$0}' $^ >$@ + awk '/PARAMETER /{print " " $$0}' $^ >> $@ + awk '/INTEGER\*8 FUNCTION/{print " " $$1 " " $$3}' $^ >>$@ -all-local: ../include/H5hutF.h - $(INSTALL) -m644 .libs/libH5hutF.a ../lib +all-local: $(top_srcdir)/src/include/H5hut.f + $(INSTALL) -m644 .libs/libH5hutF.a $(top_builddir)/src/lib endif clean: clean-am diff --git a/src/Fortran/h5_private.h b/src/Fortran/h5_private.h index 444e9f8..628e968 100644 --- a/src/Fortran/h5_private.h +++ b/src/Fortran/h5_private.h @@ -80,4 +80,15 @@ h5_filehandlefor2c ( ) { return (h5_file_t)*ptr; } + +static inline +int strlenf ( + const char* s, + int len + ) { + if (len == 0) return 0; + while (s[--len] == ' '); + return ++len; +} + #endif diff --git a/src/include/H5.f90 b/src/include/H5.f90 index 7c234f2..de09013 100644 --- a/src/include/H5.f90 +++ b/src/include/H5.f90 @@ -1,215 +1,130 @@ -! Declaration of subroutines for Fortran Bindings +! +! Copyright (c) 2006-2013, The Regents of the University of California, +! through Lawrence Berkeley National Laboratory (subject to receipt of any +! required approvals from the U.S. Dept. of Energy) and the Paul Scherrer +! Institut (Switzerland). All rights reserved.! +! +! License: see file COPYING in top level of source distribution. +! + INTERFACE -!!!!!!!! File Opening and Closing !!!!!!!! + !> + !! \ingroup h5hut_file_f + !! Create file property. See \ref H5CreateProp + !! \return 0 on success or -2 on error + !< + INTEGER*8 FUNCTION h5_createprop_file () + END FUNCTION h5_createprop_file + + !> + !! \ingroup h5hut_file_f + !! Store MPI IO comminicator information in file property list. See \ref H5SetPropFileMPIO + !! \return 0 on success or -2 on error + !< + INTEGER*8 FUNCTION h5_setprop_filempio (prop, comm) + INTEGER*8, INTENT(IN) :: prop !< property + INTEGER, INTENT(IN) :: comm !< the MPI communicator used by the program + END FUNCTION h5_setprop_filempio + + !> + !! \ingroup h5hut_file_f + !! Set alignment. See \ref H5SetPropFileAlign + !! \return 0 on success or -2 on error + !< + INTEGER*8 FUNCTION h5_setprop_filealign (prop, align) + INTEGER*8, INTENT(IN) :: prop !< property + INTEGER*8, INTENT(IN) :: align !< alignment + END FUNCTION h5_setprop_filealign + + !> + !! \ingroup h5hut_file_f + !! Set throttle. See \ref H5SetPropFileThrottle + !! \return 0 on success or -2 on error + !< + INTEGER*8 FUNCTION h5_setprop_filethrottle (prop, throttle) + INTEGER*8, INTENT(IN) :: prop !< property + INTEGER*8, INTENT(IN) :: throttle !< throttle + END FUNCTION h5_setprop_filethrottle + + !> + !! \ingroup h5hut_file_f + !! Close property. See \ref H5CloseProp + !! \return 0 on success or -2 on error + !< + INTEGER*8 FUNCTION h5_closeprop (prop) + INTEGER*8, INTENT(IN) :: prop !< property + END FUNCTION h5_closeprop + + !> + !! \ingroup h5hut_file_f + !! Opens a file for reading. See \ref H5OpenFile + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_openfile (fname, mode, props) + CHARACTER(LEN=*), INTENT(IN) :: fname !< the filename to open for reading + INTEGER*8, INTENT(IN) :: mode !< file mode + INTEGER*8, INTENT(IN) :: props !< properties + END FUNCTION h5_openfile + + !> + !! \ingroup h5hut_file_f + !! Closes a file. See \ref H5CloseFile + !! \return 0 on success or error code + INTEGER*8 FUNCTION h5_closefile (filehandle) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + END FUNCTION h5_closefile + + !> + !! \ingroup h5hut_file_f + !! Checks that a file is valid. See \ref H5CheckFile + !! \return H5_SUCCESS or H5_FAILURE + !< + INTEGER*8 FUNCTION h5_checkfile ( filehandle ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + END FUNCTION h5_checkfile + + !> + !! \ingroup h5hut_file_f + !! Flush file data to disk. + !! \return H5_SUCCESS or H5_FAILURE + !< + INTEGER*8 FUNCTION h5_flushfile (filehandle) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + END FUNCTION h5_flushfile + + !> + !! \ingroup h5hut_file_f + !! Flush step data to disk. + !! \return H5_SUCCESS or H5_FAILURE + !< + INTEGER*8 FUNCTION h5_flushstep (filehandle) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + END FUNCTION h5_flushstep + + !> + !! \ingroup h5hut_file_f + !! Close HDF5 library. See \ref H5Finalize + !! \return \c H5_SUCCESS or \c H5_FAILURE + !< + INTEGER*8 FUNCTION h5_finalize () + END FUNCTION h5_finalize -!> -!! \ingroup h5hut_file_f -!! Opens a file for reading. See \ref H5OpenFile -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_openr ( filename ) - CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for reading -END FUNCTION + !> + !! \ingroup h5hut_error_f + !! See \ref H5SetVerbosityLevel + !! \return 0 on success or error code + !< + SUBROUTINE h5_set_verbosity_level ( level ) + INTEGER*8, INTENT(IN) :: level !< the level from 0 (no output) to 5 (most detailed) + END SUBROUTINE h5_set_verbosity_level -!> -!! \ingroup h5hut_file_f -!! Opens a file for writing in truncate mode. See \ref H5OpenFile -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_openw ( filename ) - CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for writing -END FUNCTION - -!> -!! \ingroup h5hut_file_f -!! Opens a file for writing in append mode. See \ref H5OpenFile -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_opena ( filename ) - CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for appending -END FUNCTION - -!> -!! \ingroup h5hut_file_f -!! Opens a parallel file for reading. See \ref H5OpenFile -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_openr_par ( filename, mpi_communicator ) - CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for reading - INTEGER, INTENT(IN) :: mpi_communicator !< the MPI communicator used by the program -END FUNCTION - -!> -!! \ingroup h5hut_file_f -!! Opens a parallel file for writing in truncate mode. See \ref H5OpenFile -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_openw_par ( filename, mpi_communicator ) - CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for writing - INTEGER, INTENT(IN) :: mpi_communicator !< the MPI_Communicator used by the program -END FUNCTION - -!> -!! \ingroup h5hut_file_f -!! Opens a parallel file for writing in append mode. See \ref H5OpenFile -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_opena_par ( filename, mpi_communicator ) - CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for appending - INTEGER, INTENT(IN) :: mpi_communicator !< the MPI_Communicator used by the program -END FUNCTION - -!> -!! \ingroup h5hut_file_f -!! Opens a file for reading and specifies an HDF5 alignment. -!! See \ref H5OpenFileAlign -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_openr_align ( filename, align ) - CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for reading - INTEGER*8, INTENT(IN) :: align !< alignment value in bytes -END FUNCTION - -!> -!! \ingroup h5hut_file_f -!! Opens a file for writing in truncate mode and specifies an HDF5 alignment. -!! See \ref H5OpenFileAlign -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_openw_align ( filename, align ) - CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for writing - INTEGER*8, INTENT(IN) :: align !< alignment value in bytes -END FUNCTION - -!> -!! \ingroup h5hut_file_f -!! Opens a file for writing in append mode and specifies an HDF5 alignment. -!! See \ref H5OpenFileAlign -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_opena_align ( filename, align ) - CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for appending - INTEGER*8, INTENT(IN) :: align !< alignment value in bytes -END FUNCTION - -!> -!! \ingroup h5hut_file_f -!! Opens a parallel file for reading and specifies an HDF5 alignment. -!! See \ref H5OpenFileAlign -!! -!! Flags are specified as a comma separated string that can include: -!! -!! - \c fs_lustre - enable optimizations for the Lustre file system -!! - \c vfd_mpiposix - use the HDF5 MPI-POSIX virtual file driver -!! - \c vfd_mpio_ind - use MPI-IO in indepedent mode -!! -!! See \ref H5OpenFileAlign -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_openr_par_align ( filename, mpi_communicator, align, flags ) - CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for reading - INTEGER, INTENT(IN) :: mpi_communicator !< the MPI_Communicator used by the program - INTEGER*8, INTENT(IN) :: align !< alignment value in bytes - CHARACTER(LEN=*), INTENT(IN) :: flags !< additional flags -END FUNCTION - -!> -!! \ingroup h5hut_file_f -!! Opens a parallel file for writing in truncate mode and specifies -!! an HDF5 alignment. -!! -!! Flags are specified as a comma separated string that can include: -!! -!! - \c fs_lustre - enable optimizations for the Lustre file system -!! - \c vfd_mpiposix - use the HDF5 MPI-POSIX virtual file driver -!! - \c vfd_mpio_ind - use MPI-IO in indepedent mode -!! -!! See \ref H5OpenFileAlign -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_openw_par_align ( filename, mpi_communicator, align, flags ) - CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for writing - INTEGER, INTENT(IN) :: mpi_communicator !< the MPI_Communicator used by the program - INTEGER*8, INTENT(IN) :: align !< alignment value in bytes - CHARACTER(LEN=*), INTENT(IN) :: flags !< additional flags -END FUNCTION - -!> -!! \ingroup h5hut_file_f -!! Opens a parallel file for writing in append mode and specifies -!! an HDF5 alignment. -!! -!! Flags are specified as a comma separated string that can include: -!! -!! - \c fs_lustre - enable optimizations for the Lustre file system -!! - \c vfd_mpiposix - use the HDF5 MPI-POSIX virtual file driver -!! - \c vfd_mpio_ind - use MPI-IO in indepedent mode -!! -!! See \ref H5OpenFileAlign -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_opena_par_align ( filename, mpi_communicator, align, flags ) - CHARACTER(LEN=*), INTENT(IN) :: filename !< the filename to open for appending - INTEGER, INTENT(IN) :: mpi_communicator !< the MPI_Communicator used by the program - INTEGER*8, INTENT(IN) :: align !< alignment value in bytes - CHARACTER(LEN=*), INTENT(IN) :: flags !< additional flags -END FUNCTION - -!> -!! \ingroup h5hut_file_f -!! Closes a file. See \ref H5CloseFile -!! \return 0 on success or error code -INTEGER*8 FUNCTION h5_close ( filehandle ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open -END FUNCTION - -!> -!! \ingroup h5hut_file_f -!! Close HDF5 library. See \ref H5Finalize -!! \return \c H5_SUCCESS or \c H5_FAILURE -INTEGER*8 FUNCTION h5_finalize () -END FUNCTION - -!> -!! \ingroup h5hut_file_f -!! Checks that a file is valid. See \ref H5CheckFile -!! \return 0 on success or error code -INTEGER*8 FUNCTION h5_check ( filehandle ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open -END FUNCTION - - -!> -!! \ingroup h5hut_model_f -!! See \ref H5SetStep -!! \return 0 on success or error code -INTEGER*8 FUNCTION h5_setstep (filehandle,step) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open - INTEGER*8, INTENT(IN) :: step !< a timestep value >= 1 -END FUNCTION - -!> -!! \ingroup h5hut_model_f -!! See \ref H5GetStep -!! \return the the current step or \c H5_FAILURE -INTEGER*8 FUNCTION h5_getstep (filehandle) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open -END FUNCTION - -!> -!! \ingroup h5hut_model_f -!! See \ref H5GetNumSteps -!! \return the number of steps or error code -INTEGER*8 FUNCTION h5_getnsteps (filehandle) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open -END FUNCTION - -!> -!! \ingroup h5hut_error_f -!! See \ref H5SetVerbosityLevel -!! \return 0 on success or error code -INTEGER*8 FUNCTION h5_set_verbosity_level ( level ) - INTEGER*8, INTENT(IN) :: level !< the level from 0 (no output) to 5 (most detailed) -END FUNCTION + !> + !! \ingroup h5hut_error_f + !! Abort program on error. + !! \return 0 on success or error code + !< + SUBROUTINE h5_abort_on_error () + END SUBROUTINE h5_abort_on_error + END INTERFACE diff --git a/src/include/H5Block.f90 b/src/include/H5Block.f90 index f145d31..e13f6b5 100644 --- a/src/include/H5Block.f90 +++ b/src/include/H5Block.f90 @@ -1,97 +1,106 @@ -! _ _ _ _ -! __| | __ _| |_ __ _ _ __ ___ ___ __| | ___| | -! / _` |/ _` | __/ _` | | '_ ` _ \ / _ \ / _` |/ _ \ | -! | (_| | (_| | || (_| | | | | | | | (_) | (_| | __/ | -! \__,_|\__,_|\__\__,_| |_| |_| |_|\___/ \__,_|\___|_| +! +! Copyright (c) 2006-2013, The Regents of the University of California, +! through Lawrence Berkeley National Laboratory (subject to receipt of any +! required approvals from the U.S. Dept. of Energy) and the Paul Scherrer +! Institut (Switzerland). All rights reserved.! +! +! License: see file COPYING in top level of source distribution. +! + INTERFACE + ! _ _ _ _ + ! __| | __ _| |_ __ _ _ __ ___ ___ __| | ___| | + ! / _` |/ _` | __/ _` | | '_ ` _ \ / _ \ / _` |/ _ \ | + ! | (_| | (_| | || (_| | | | | | | | (_) | (_| | __/ | + ! \__,_|\__,_|\__\__,_| |_| |_| |_|\___/ \__,_|\___|_| -!> -!! \ingroup h5block_model_f -!! See \ref H5Block3dSetView -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_setview ( filehandle, i_start, i_end, j_start, j_end, k_start, k_end ) - INTEGER*8, INTENT(IN) :: filehandle - INTEGER*8, INTENT(IN) :: i_start - INTEGER*8, INTENT(IN) :: i_end - INTEGER*8, INTENT(IN) :: j_start - INTEGER*8, INTENT(IN) :: j_end - INTEGER*8, INTENT(IN) :: k_start - INTEGER*8, INTENT(IN) :: k_end -END FUNCTION + !> + !! \ingroup h5block_model_f + !! See \ref H5Block3dSetView + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_setview ( filehandle, i_start, i_end, j_start, j_end, k_start, k_end ) + INTEGER*8, INTENT(IN) :: filehandle + INTEGER*8, INTENT(IN) :: i_start + INTEGER*8, INTENT(IN) :: i_end + INTEGER*8, INTENT(IN) :: j_start + INTEGER*8, INTENT(IN) :: j_end + INTEGER*8, INTENT(IN) :: k_start + INTEGER*8, INTENT(IN) :: k_end + END FUNCTION h5bl_3d_setview -!> -!! \ingroup h5block_model_f -!! See \ref H5Block3dGetView -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_getview ( filehandle, i_start, i_end, j_start, j_end, k_start, k_end ) - INTEGER*8, INTENT(IN) :: filehandle - INTEGER*8, INTENT(OUT) :: i_start - INTEGER*8, INTENT(OUT) :: i_end - INTEGER*8, INTENT(OUT) :: j_start - INTEGER*8, INTENT(OUT) :: j_end - INTEGER*8, INTENT(OUT) :: k_start - INTEGER*8, INTENT(OUT) :: k_end -END FUNCTION - -!> -!! \ingroup h5block_model_f -!! See \ref H5Block3dGetReducedView -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_getreducedview ( filehandle, i_start, i_end, j_start, j_end, k_start, k_end ) - INTEGER*8, INTENT(IN) :: filehandle - INTEGER*8, INTENT(OUT) :: i_start - INTEGER*8, INTENT(OUT) :: i_end - INTEGER*8, INTENT(OUT) :: j_start - INTEGER*8, INTENT(OUT) :: j_end - INTEGER*8, INTENT(OUT) :: k_start - INTEGER*8, INTENT(OUT) :: k_end -END FUNCTION + !> + !! \ingroup h5block_model_f + !! See \ref H5Block3dGetView + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_getview ( filehandle, i_start, i_end, j_start, j_end, k_start, k_end ) + INTEGER*8, INTENT(IN) :: filehandle + INTEGER*8, INTENT(OUT) :: i_start + INTEGER*8, INTENT(OUT) :: i_end + INTEGER*8, INTENT(OUT) :: j_start + INTEGER*8, INTENT(OUT) :: j_end + INTEGER*8, INTENT(OUT) :: k_start + INTEGER*8, INTENT(OUT) :: k_end + END FUNCTION h5bl_3d_getview -!> -!! \ingroup h5block_model_f -!! See \ref H5Block3dHasView -!! \return rank of processor error code -!< -INTEGER*8 FUNCTION h5bl_3d_hasview ( filehandle ) - INTEGER*8, INTENT(IN) :: filehandle -END FUNCTION + !> + !! \ingroup h5block_model_f + !! See \ref H5Block3dGetReducedView + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_getreducedview ( filehandle, i_start, i_end, j_start, j_end, k_start, k_end ) + INTEGER*8, INTENT(IN) :: filehandle + INTEGER*8, INTENT(OUT) :: i_start + INTEGER*8, INTENT(OUT) :: i_end + INTEGER*8, INTENT(OUT) :: j_start + INTEGER*8, INTENT(OUT) :: j_end + INTEGER*8, INTENT(OUT) :: k_start + INTEGER*8, INTENT(OUT) :: k_end + END FUNCTION h5bl_3d_getreducedview -!> -!! \ingroup h5block_model_f -!! See \ref H5Block3dSetChunk -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_setchunk ( filehandle, i, j, k ) - INTEGER*8, INTENT(IN) :: filehandle - INTEGER*8, INTENT(IN) :: i - INTEGER*8, INTENT(IN) :: j - INTEGER*8, INTENT(IN) :: k -END FUNCTION - -!> -!! \ingroup h5block_model_f -!! See \ref H5BlockGetNumFields -!! \return number of fields or error code -!< -INTEGER*8 FUNCTION h5bl_getnumfields ( filehandle ) - INTEGER*8, INTENT(IN) :: filehandle -END FUNCTION - -!> -!! \ingroup h5block_model_f -!! See \ref H5BlockGetFieldInfo -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_getfieldinfo ( filehandle, idx, field_name, grid_rank, grid_dims, field_dims ) - INTEGER*8, INTENT(IN) :: filehandle - INTEGER*8, INTENT(IN) :: idx - CHARACTER(LEN=*), INTENT(OUT) :: field_name - INTEGER*8, INTENT(OUT) :: grid_rank - INTEGER*8, INTENT(OUT) :: grid_dims(*) - INTEGER*8, INTENT(OUT) :: field_dims - INTEGER*8, INTENT(OUT) :: type -END FUNCTION + !> + !! \ingroup h5block_model_f + !! See \ref H5Block3dHasView + !! \return rank of processor error code + !< + INTEGER*8 FUNCTION h5bl_3d_hasview ( filehandle ) + INTEGER*8, INTENT(IN) :: filehandle + END FUNCTION h5bl_3d_hasview + !> + !! \ingroup h5block_model_f + !! See \ref H5Block3dSetChunk + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_setchunk ( filehandle, i, j, k ) + INTEGER*8, INTENT(IN) :: filehandle + INTEGER*8, INTENT(IN) :: i + INTEGER*8, INTENT(IN) :: j + INTEGER*8, INTENT(IN) :: k + END FUNCTION h5bl_3d_setchunk + + !> + !! \ingroup h5block_model_f + !! See \ref H5BlockGetNumFields + !! \return number of fields or error code + !< + INTEGER*8 FUNCTION h5bl_getnumfields ( filehandle ) + INTEGER*8, INTENT(IN) :: filehandle + END FUNCTION h5bl_getnumfields + + !> + !! \ingroup h5block_model_f + !! See \ref H5BlockGetFieldInfo + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_getfieldinfo ( filehandle, idx, field_name, grid_rank, grid_dims, field_dims ) + INTEGER*8, INTENT(IN) :: filehandle + INTEGER*8, INTENT(IN) :: idx + CHARACTER(LEN=*), INTENT(OUT) :: field_name + INTEGER*8, INTENT(OUT) :: grid_rank + INTEGER*8, INTENT(OUT) :: grid_dims(*) + INTEGER*8, INTENT(OUT) :: field_dims + END FUNCTION h5bl_getfieldinfo + + END INTERFACE diff --git a/src/include/H5Block_attribs.f90 b/src/include/H5Block_attribs.f90 index 020aa6e..90350c7 100644 --- a/src/include/H5Block_attribs.f90 +++ b/src/include/H5Block_attribs.f90 @@ -1,249 +1,259 @@ - -! __ _ _ _ _ _ _ _ _ -! / _(_) ___| | __| | __ _| |_| |_ _ __(_) |__ _ _| |_ ___ ___ -! | |_| |/ _ \ |/ _` | / _` | __| __| '__| | '_ \| | | | __/ _ \/ __| -! | _| | __/ | (_| | | (_| | |_| |_| | | | |_) | |_| | || __/\__ \ -! |_| |_|\___|_|\__,_| \__,_|\__|\__|_| |_|_.__/ \__,_|\__\___||___/ - ! -! __ _ _ _ ___ _ __ _ _ -! / _` | | | |/ _ \ '__| | | | -! | (_| | |_| | __/ | | |_| | -! \__, |\__,_|\___|_| \__, | -! |_| |___/ +! Copyright (c) 2006-2013, The Regents of the University of California, +! through Lawrence Berkeley National Laboratory (subject to receipt of any +! required approvals from the U.S. Dept. of Energy) and the Paul Scherrer +! Institut (Switzerland). All rights reserved.! +! +! License: see file COPYING in top level of source distribution. +! + INTERFACE -!> -!! \ingroup h5block_attrib_f -!! See \ref H5BlockGetNumFieldAttribs -!! \return number of attributes or error code -!< -INTEGER*8 FUNCTION h5bl_getnfieldattribs (filehandle, field_name) - INTEGER*8, INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field -END FUNCTION - -!> -!! \ingroup h5block_attrib_f -!! See \ref H5BlockGetFieldAttribInfo -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_getfieldattribinfo (filehandle, field_name, idx, attrib_name, attrib_nelems) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field - INTEGER*8,INTENT(IN) :: idx !< index of attribute being queried - CHARACTER(LEN=*), INTENT(OUT):: attrib_name !< name of attribute - INTEGER*8,INTENT(OUT):: attrib_nelems !< number of elements in the attrib array -END FUNCTION + ! __ _ _ _ _ _ _ _ _ + ! / _(_) ___| | __| | __ _| |_| |_ _ __(_) |__ _ _| |_ ___ ___ + ! | |_| |/ _ \ |/ _` | / _` | __| __| '__| | '_ \| | | | __/ _ \/ __| + ! | _| | __/ | (_| | | (_| | |_| |_| | | | |_) | |_| | || __/\__ \ + ! |_| |_|\___|_|\__,_| \__,_|\__|\__|_| |_|_.__/ \__,_|\__\___||___/ -! _ __ _ _ -! (_) / /__ ___| |_ _ __(_)_ __ __ _ -! | | / / _ \ / __| __| '__| | '_ \ / _` | -! | |/ / (_) | \__ \ |_| | | | | | | (_| | -! |_/_/ \___/ |___/\__|_| |_|_| |_|\__, | -! |___/ + ! + ! __ _ _ _ ___ _ __ _ _ + ! / _` | | | |/ _ \ '__| | | | + ! | (_| | |_| | __/ | | |_| | + ! \__, |\__,_|\___|_| \__, | + ! |_| |___/ -!> -!! \ingroup h5block_attrib_f -!! See \ref H5BlockWriteFieldAttribString -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_writefieldattrib_string (filehandle, field_name, attrib_name, attrib_value, attrib_nelems) - INTEGER*8, INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute - CHARACTER(LEN=*), INTENT(IN) :: attrib_value!< attribute data to be written - INTEGER*8, INTENT(IN) :: attrib_nelems !< number of elements in data array -END FUNCTION - -!> -!! \ingroup h5block_attrib_f -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_readfieldattrib_string (filehandle, field_name, attrib_name, attrib_value) - INTEGER*8, INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute - CHARACTER(LEN=*), INTENT(IN) :: attrib_value!< attribute data will be read into this array -END FUNCTION + !> + !! \ingroup h5block_attrib_f + !! See \ref H5BlockGetNumFieldAttribs + !! \return number of attributes or error code + !< + INTEGER*8 FUNCTION h5bl_getnfieldattribs (filehandle, field_name) + INTEGER*8, INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field + END FUNCTION h5bl_getnfieldattribs -! _ __ _ -! (_) / /__ _ __ ___ __ _| | -! | | / / _ \ | '__/ _ \/ _` | | -! | |/ / (_) | | | | __/ (_| | | -! |_/_/ \___/ |_| \___|\__,_|_| + !> + !! \ingroup h5block_attrib_f + !! See \ref H5BlockGetFieldAttribInfo + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_getfieldattribinfo (filehandle, field_name, idx, attrib_name, attrib_nelems) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field + INTEGER*8,INTENT(IN) :: idx !< index of attribute being queried + CHARACTER(LEN=*), INTENT(OUT):: attrib_name !< name of attribute + INTEGER*8,INTENT(OUT):: attrib_nelems !< number of elements in the attrib array + END FUNCTION h5bl_getfieldattribinfo -!> -!! \ingroup h5block_attrib_f -!! -!! See \ref H5BlockWriteFieldAttribFloat64 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_writefieldattrib_r8 (filehandle, field_name, attrib_name, attrib_value, attrib_nelems) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to write - REAL*8, INTENT(OUT):: attrib_value(*) !< attribute data to be written - INTEGER*8, INTENT(IN) :: attrib_nelems !< number of elements in data array -END FUNCTION + ! _ __ _ _ + ! (_) / /__ ___| |_ _ __(_)_ __ __ _ + ! | | / / _ \ / __| __| '__| | '_ \ / _` | + ! | |/ / (_) | \__ \ |_| | | | | | | (_| | + ! |_/_/ \___/ |___/\__|_| |_|_| |_|\__, | + ! |___/ -!> -!! \ingroup h5block_attrib_f -!! See \ref H5BlockReadFieldAttribFloat64 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_readfieldattrib_r8 ( filehandle, field_name, attrib_name, attrib_value ) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read - REAL*8, INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array -END FUNCTION + !> + !! \ingroup h5block_attrib_f + !! See \ref H5BlockWriteFieldAttribString + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_writefieldattrib_string (filehandle, field_name, attrib_name, attrib_value, attrib_nelems) + INTEGER*8, INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute + CHARACTER(LEN=*), INTENT(IN) :: attrib_value!< attribute data to be written + INTEGER*8, INTENT(IN) :: attrib_nelems !< number of elements in data array + END FUNCTION h5bl_writefieldattrib_string -!> -!! \ingroup h5block_attrib_f -!! See \ref H5BlockWriteFieldAttribFloat32 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_writefieldattrib_r4 (filehandle, field_name, attrib_name, attrib_value, attrib_nelems) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to write - REAL*4, INTENT(OUT):: attrib_value(*) !< attribute datato be written - INTEGER*8, INTENT(IN) :: attrib_nelems !< number of elements in data array -END FUNCTION + !> + !! \ingroup h5block_attrib_f + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_readfieldattrib_string (filehandle, field_name, attrib_name, attrib_value) + INTEGER*8, INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute + CHARACTER(LEN=*), INTENT(IN) :: attrib_value!< attribute data will be read into this array + END FUNCTION h5bl_readfieldattrib_string -!> -!! \ingroup h5block_attrib_f -!! See \ref H5BlockReadFieldAttribFloat32 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_readfieldattrib_r4 (filehandle, field_name, attrib_name, attrib_value) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read - REAL*4, INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array -END FUNCTION + ! _ __ _ + ! (_) / /__ _ __ ___ __ _| | + ! | | / / _ \ | '__/ _ \/ _` | | + ! | |/ / (_) | | | | __/ (_| | | + ! |_/_/ \___/ |_| \___|\__,_|_| -! _ __ _ _ -! (_) / /__ (_)_ __ | |_ ___ __ _ ___ _ __ -! | | / / _ \ | | '_ \| __/ _ \/ _` |/ _ \ '__| -! | |/ / (_) | | | | | | || __/ (_| | __/ | -! |_/_/ \___/ |_|_| |_|\__\___|\__, |\___|_| -! |___/ + !> + !! \ingroup h5block_attrib_f + !! + !! See \ref H5BlockWriteFieldAttribFloat64 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_writefieldattrib_r8 (filehandle, field_name, attrib_name, attrib_value, attrib_nelems) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to write + REAL*8, INTENT(OUT):: attrib_value(*) !< attribute data to be written + INTEGER*8, INTENT(IN) :: attrib_nelems !< number of elements in data array + END FUNCTION h5bl_writefieldattrib_r8 -!> -!! \ingroup h5block_attrib_f -!! See \ref H5BlockWriteFieldAttribInt64 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_writefieldattrib_i8 (filehandle, field_name, attrib_name, attrib_value, attrib_nelems) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to write - INTEGER*8,INTENT(OUT):: attrib_value(*) !< attribute data to be written - INTEGER*8, INTENT(IN) :: attrib_nelems !< number of elements in data array -END FUNCTION + !> + !! \ingroup h5block_attrib_f + !! See \ref H5BlockReadFieldAttribFloat64 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_readfieldattrib_r8 ( filehandle, field_name, attrib_name, attrib_value ) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read + REAL*8, INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array + END FUNCTION h5bl_readfieldattrib_r8 -!> -!! \ingroup h5block_attrib_f -!! See \ref H5BlockReadFieldAttribInt64 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_readfieldattrib_i8 (filehandle, field_name, attrib_name, attrib_value) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read - INTEGER*8,INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array -END FUNCTION + !> + !! \ingroup h5block_attrib_f + !! See \ref H5BlockWriteFieldAttribFloat32 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_writefieldattrib_r4 (filehandle, field_name, attrib_name, attrib_value, attrib_nelems) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to write + REAL*4, INTENT(OUT):: attrib_value(*) !< attribute datato be written + INTEGER*8, INTENT(IN) :: attrib_nelems !< number of elements in data array + END FUNCTION h5bl_writefieldattrib_r4 -!> -!! \ingroup h5block_attrib_f -!! See \ref H5BlockWriteFieldAttribInt32 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_writefieldattrib_i4 (filehandle, field_name, attrib_name, attrib_value, attrib_nelems) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to write - INTEGER*4,INTENT(OUT):: attrib_value(*) !< attribute data to be written - INTEGER*8, INTENT(IN) :: attrib_nelems !< number of elements in data array -END FUNCTION + !> + !! \ingroup h5block_attrib_f + !! See \ref H5BlockReadFieldAttribFloat32 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_readfieldattrib_r4 (filehandle, field_name, attrib_name, attrib_value) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read + REAL*4, INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array + END FUNCTION h5bl_readfieldattrib_r4 -!> -!! \ingroup h5block_attrib_f -!! See \ref H5BlockReadFieldAttribInt32 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_readfieldattrib_i4 (filehandle, field_name, attrib_name, attrib_value) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read - INTEGER*4,INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array -END FUNCTION + ! _ __ _ _ + ! (_) / /__ (_)_ __ | |_ ___ __ _ ___ _ __ + ! | | / / _ \ | | '_ \| __/ _ \/ _` |/ _ \ '__| + ! | |/ / (_) | | | | | | || __/ (_| | __/ | + ! |_/_/ \___/ |_|_| |_|\__\___|\__, |\___|_| + ! |___/ -! __ _ _ _ _ -! / _(_) ___| | __| | ___ _ __ __ _ ___(_)_ __ __ _ -! | |_| |/ _ \ |/ _` | / __| '_ \ / _` |/ __| | '_ \ / _` | -! | _| | __/ | (_| | \__ \ |_) | (_| | (__| | | | | (_| | -! |_| |_|\___|_|\__,_| |___/ .__/ \__,_|\___|_|_| |_|\__, | -! |_| |___/ + !> + !! \ingroup h5block_attrib_f + !! See \ref H5BlockWriteFieldAttribInt64 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_writefieldattrib_i8 (filehandle, field_name, attrib_name, attrib_value, attrib_nelems) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to write + INTEGER*8,INTENT(OUT):: attrib_value(*) !< attribute data to be written + INTEGER*8, INTENT(IN) :: attrib_nelems !< number of elements in data array + END FUNCTION h5bl_writefieldattrib_i8 -!> -!! \ingroup h5block_attrib_f -!! See \ref H5Block3dGetFieldSpacing -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_get_field_spacing (filehandle, name, x, y, z) - INTEGER*8, INTENT(IN) :: filehandle - CHARACTER(LEN=*), INTENT(IN) :: name - REAL*8, INTENT(OUT) :: x - REAL*8, INTENT(OUT) :: y - REAL*8, INTENT(OUT) :: z -END FUNCTION + !!> + !! \ingroup h5block_attrib_f + !! See \ref H5BlockReadFieldAttribInt64 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_readfieldattrib_i8 (filehandle, field_name, attrib_name, attrib_value) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read + INTEGER*8,INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array + END FUNCTION h5bl_readfieldattrib_i8 -!> -!! \ingroup h5block_attrib_f -!! See \ref H5Block3dSetFieldSpacing -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_set_field_spacing (filehandle, name, x, y, z) - INTEGER*8, INTENT(IN) :: filehandle - CHARACTER(LEN=*), INTENT(IN) :: name - REAL*8, INTENT(IN) :: x - REAL*8, INTENT(IN) :: y - REAL*8, INTENT(IN) :: z -END FUNCTION + !> + !! \ingroup h5block_attrib_f + !! See \ref H5BlockWriteFieldAttribInt32 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_writefieldattrib_i4 (filehandle, field_name, attrib_name, attrib_value, attrib_nelems) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to write + INTEGER*4,INTENT(OUT):: attrib_value(*) !< attribute data to be written + INTEGER*8, INTENT(IN) :: attrib_nelems !< number of elements in data array + END FUNCTION h5bl_writefieldattrib_i4 -! __ _ _ _ _ _ -! / _(_) ___| | __| | ___ _ __(_) __ _(_)_ __ -! | |_| |/ _ \ |/ _` | / _ \| '__| |/ _` | | '_ \ -! | _| | __/ | (_| | | (_) | | | | (_| | | | | | -! |_| |_|\___|_|\__,_| \___/|_| |_|\__, |_|_| |_| -! |___/ + !> + !! \ingroup h5block_attrib_f + !! See \ref H5BlockReadFieldAttribInt32 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_readfieldattrib_i4 (filehandle, field_name, attrib_name, attrib_value) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: field_name !< name of field + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read + INTEGER*4,INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array + END FUNCTION h5bl_readfieldattrib_i4 -!> -!! \ingroup h5block_attrib_f -!! See \ref H5Block3dGetFieldOrigin -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_get_field_origin (filehandle, name, x, y, z) - INTEGER*8, INTENT(IN) :: filehandle - CHARACTER(LEN=*), INTENT(IN) :: name - REAL*8, INTENT(OUT) :: x - REAL*8, INTENT(OUT) :: y - REAL*8, INTENT(OUT) :: z -END FUNCTION - -!> -!! \ingroup h5block_attrib_f -!! See \ref H5Block3dSetFieldOrigin -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_set_field_origin (filehandle, name, x, y, z) - INTEGER*8, INTENT(IN) :: filehandle - CHARACTER(LEN=*), INTENT(IN) :: name - REAL*8, INTENT(IN) :: x - REAL*8, INTENT(IN) :: y - REAL*8, INTENT(IN) :: z -END FUNCTION + ! __ _ _ _ _ + ! / _(_) ___| | __| | ___ _ __ __ _ ___(_)_ __ __ _ + ! | |_| |/ _ \ |/ _` | / __| '_ \ / _` |/ __| | '_ \ / _` | + ! | _| | __/ | (_| | \__ \ |_) | (_| | (__| | | | | (_| | + ! |_| |_|\___|_|\__,_| |___/ .__/ \__,_|\___|_|_| |_|\__, | + ! |_| |___/ -!> @} + !> + !! \ingroup h5block_attrib_f + !! See \ref H5Block3dGetFieldSpacing + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_get_field_spacing (filehandle, name, x, y, z) + INTEGER*8, INTENT(IN) :: filehandle + CHARACTER(LEN=*), INTENT(IN) :: name + REAL*8, INTENT(OUT) :: x + REAL*8, INTENT(OUT) :: y + REAL*8, INTENT(OUT) :: z + END FUNCTION h5bl_3d_get_field_spacing + + !> + !! \ingroup h5block_attrib_f + !! See \ref H5Block3dSetFieldSpacing + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_set_field_spacing (filehandle, name, x, y, z) + INTEGER*8, INTENT(IN) :: filehandle + CHARACTER(LEN=*), INTENT(IN) :: name + REAL*8, INTENT(IN) :: x + REAL*8, INTENT(IN) :: y + REAL*8, INTENT(IN) :: z + END FUNCTION h5bl_3d_set_field_spacing + + ! __ _ _ _ _ _ + ! / _(_) ___| | __| | ___ _ __(_) __ _(_)_ __ + ! | |_| |/ _ \ |/ _` | / _ \| '__| |/ _` | | '_ \ + ! | _| | __/ | (_| | | (_) | | | | (_| | | | | | + ! |_| |_|\___|_|\__,_| \___/|_| |_|\__, |_|_| |_| + ! |___/ + + !> + !! \ingroup h5block_attrib_f + !! See \ref H5Block3dGetFieldOrigin + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_get_field_origin (filehandle, name, x, y, z) + INTEGER*8, INTENT(IN) :: filehandle + CHARACTER(LEN=*), INTENT(IN) :: name + REAL*8, INTENT(OUT) :: x + REAL*8, INTENT(OUT) :: y + REAL*8, INTENT(OUT) :: z + END FUNCTION h5bl_3d_get_field_origin + + !> + !! \ingroup h5block_attrib_f + !! See \ref H5Block3dSetFieldOrigin + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_set_field_origin (filehandle, name, x, y, z) + INTEGER*8, INTENT(IN) :: filehandle + CHARACTER(LEN=*), INTENT(IN) :: name + REAL*8, INTENT(IN) :: x + REAL*8, INTENT(IN) :: y + REAL*8, INTENT(IN) :: z + END FUNCTION h5bl_3d_set_field_origin + + !> @} + END INTERFACE diff --git a/src/include/H5Block_io.f90 b/src/include/H5Block_io.f90 index 12662d6..127a0fe 100644 --- a/src/include/H5Block_io.f90 +++ b/src/include/H5Block_io.f90 @@ -1,181 +1,191 @@ -!> \ingroup h5hut_f90_api -!! \addtogroup h5block_data_f -!! @{ +! +! Copyright (c) 2006-2013, The Regents of the University of California, +! through Lawrence Berkeley National Laboratory (subject to receipt of any +! required approvals from the U.S. Dept. of Energy) and the Paul Scherrer +! Institut (Switzerland). All rights reserved.! +! +! License: see file COPYING in top level of source distribution. +! + INTERFACE + !> \ingroup h5hut_f90_api + !! \addtogroup h5block_data_f + !! @{ -!> -!! See \ref H5Block3dWriteScalarFieldFloat64 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_write_scalar_field_r8 ( filehandle, name, buffer ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - REAL*8, INTENT(IN) :: buffer(*) !< the array of data -END FUNCTION + !> + !! See \ref H5Block3dWriteScalarFieldFloat64 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_write_scalar_field_r8 ( filehandle, name, buffer ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + REAL*8, INTENT(IN) :: buffer(*) !< the array of data + END FUNCTION h5bl_3d_write_scalar_field_r8 -!> -!! See \ref H5Block3dReadScalarFieldFloat64 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_read_scalar_field_r8 ( filehandle, name, buffer ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - REAL*8, INTENT(OUT) :: buffer(*) !< buffer to read the data into -END FUNCTION - -!> -!! See \ref H5Block3dWriteVector3dFieldFloat64 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_write_vector3d_field_r8 ( filehandle, name, x, y, z ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - REAL*8, INTENT(IN) :: x(*) !< the array of x data to write - REAL*8, INTENT(IN) :: y(*) !< the array of y data to write - REAL*8, INTENT(IN) :: z(*) !< the array of z data to write -END FUNCTION + !> + !! See \ref H5Block3dReadScalarFieldFloat64 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_read_scalar_field_r8 ( filehandle, name, buffer ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + REAL*8, INTENT(OUT) :: buffer(*) !< buffer to read the data into + END FUNCTION h5bl_3d_read_scalar_field_r8 -!> -!! See \ref H5Block3dReadVector3dFieldFloat64 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_read_vector3d_field_r8 ( filehandle, name, x, y, z ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - REAL*8, INTENT(OUT) :: x(*) !< buffer to read the x data into - REAL*8, INTENT(OUT) :: y(*) !< buffer to read the y data into - REAL*8, INTENT(OUT) :: z(*) !< buffer to read the z data into -END FUNCTION + !> + !! See \ref H5Block3dWriteVector3dFieldFloat64 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_write_vector3d_field_r8 ( filehandle, name, x, y, z ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + REAL*8, INTENT(IN) :: x(*) !< the array of x data to write + REAL*8, INTENT(IN) :: y(*) !< the array of y data to write + REAL*8, INTENT(IN) :: z(*) !< the array of z data to write + END FUNCTION h5bl_3d_write_vector3d_field_r8 -!> -!! See \ref H5Block3dWriteScalarFieldFloat32 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_write_scalar_field_r4 ( filehandle, name, buffer ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - REAL*4, INTENT(IN) :: buffer(*) !< the array of data -END FUNCTION + !> + !! See \ref H5Block3dReadVector3dFieldFloat64 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_read_vector3d_field_r8 ( filehandle, name, x, y, z ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + REAL*8, INTENT(OUT) :: x(*) !< buffer to read the x data into + REAL*8, INTENT(OUT) :: y(*) !< buffer to read the y data into + REAL*8, INTENT(OUT) :: z(*) !< buffer to read the z data into + END FUNCTION h5bl_3d_read_vector3d_field_r8 -!> -!! See \ref H5Block3dReadScalarFieldFloat32 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_read_scalar_field_r4 ( filehandle, name, buffer ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - REAL*4, INTENT(OUT) :: buffer(*) !< buffer to read the data into -END FUNCTION - -!> -!! See \ref H5Block3dWriteVector3dFieldFloat32 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_write_vector3d_field_r4 ( filehandle, name, x, y, z ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - REAL*4, INTENT(IN) :: x(*) !< the array of x data to write - REAL*4, INTENT(IN) :: y(*) !< the array of y data to write - REAL*4, INTENT(IN) :: z(*) !< the array of z data to write -END FUNCTION + !> + !! See \ref H5Block3dWriteScalarFieldFloat32 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_write_scalar_field_r4 ( filehandle, name, buffer ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + REAL*4, INTENT(IN) :: buffer(*) !< the array of data + END FUNCTION h5bl_3d_write_scalar_field_r4 -!> -!! See \ref H5Block3dReadVector3dFieldFloat32 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_read_vector3d_field_r4 ( filehandle, name, x, y, z ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - REAL*4, INTENT(OUT) :: x(*) !< buffer to read the x data into - REAL*4, INTENT(OUT) :: y(*) !< buffer to read the y data into - REAL*4, INTENT(OUT) :: z(*) !< buffer to read the z data into -END FUNCTION + !> + !! See \ref H5Block3dReadScalarFieldFloat32 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_read_scalar_field_r4 ( filehandle, name, buffer ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + REAL*4, INTENT(OUT) :: buffer(*) !< buffer to read the data into + END FUNCTION h5bl_3d_read_scalar_field_r4 -!> -!! See \ref H5Block3dWriteScalarFieldInt64 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_write_scalar_field_i8 ( filehandle, name, buffer ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - INTEGER*8, INTENT(IN) :: buffer(*) !< the array of data -END FUNCTION + !> + !! See \ref H5Block3dWriteVector3dFieldFloat32 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_write_vector3d_field_r4 ( filehandle, name, x, y, z ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + REAL*4, INTENT(IN) :: x(*) !< the array of x data to write + REAL*4, INTENT(IN) :: y(*) !< the array of y data to write + REAL*4, INTENT(IN) :: z(*) !< the array of z data to write + END FUNCTION h5bl_3d_write_vector3d_field_r4 -!> -!! See \ref H5Block3dReadScalarFieldInt64 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_read_scalar_field_i8 ( filehandle, name, buffer ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - INTEGER*8, INTENT(OUT) :: buffer(*) !< buffer to read the data into -END FUNCTION - -!> -!! See \ref H5Block3dWriteVector3dFieldInt64 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_write_vector3d_field_i8 ( filehandle, name, x, y, z ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - INTEGER*8, INTENT(IN) :: x(*) !< the array of x data to write - INTEGER*8, INTENT(IN) :: y(*) !< the array of y data to write - INTEGER*8, INTENT(IN) :: z(*) !< the array of z data to write -END FUNCTION + !> + !! See \ref H5Block3dReadVector3dFieldFloat32 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_read_vector3d_field_r4 ( filehandle, name, x, y, z ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + REAL*4, INTENT(OUT) :: x(*) !< buffer to read the x data into + REAL*4, INTENT(OUT) :: y(*) !< buffer to read the y data into + REAL*4, INTENT(OUT) :: z(*) !< buffer to read the z data into + END FUNCTION h5bl_3d_read_vector3d_field_r4 -!> -!! See \ref H5Block3dReadVector3dFieldInt64 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_read_vector3d_field_i8 ( filehandle, name, x, y, z ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - INTEGER*8, INTENT(OUT) :: x(*) !< buffer to read the x data into - INTEGER*8, INTENT(OUT) :: y(*) !< buffer to read the y data into - INTEGER*8, INTENT(OUT) :: z(*) !< buffer to read the z data into -END FUNCTION + !> + !! See \ref H5Block3dWriteScalarFieldInt64 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_write_scalar_field_i8 ( filehandle, name, buffer ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + INTEGER*8, INTENT(IN) :: buffer(*) !< the array of data + END FUNCTION h5bl_3d_write_scalar_field_i8 -!> -!! See \ref H5Block3dWriteScalarFieldInt32 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_write_scalar_field_i4 ( filehandle, name, buffer ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - INTEGER*4, INTENT(IN) :: buffer(*) !< the array of data -END FUNCTION + !> + !! See \ref H5Block3dReadScalarFieldInt64 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_read_scalar_field_i8 ( filehandle, name, buffer ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + INTEGER*8, INTENT(OUT) :: buffer(*) !< buffer to read the data into + END FUNCTION h5bl_3d_read_scalar_field_i8 -!> -!! See \ref H5Block3dReadScalarFieldInt32 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_read_scalar_field_i4 ( filehandle, name, buffer ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - INTEGER*4, INTENT(OUT) :: buffer(*) !< buffer to read the data into -END FUNCTION - -!> -!! See \ref H5Block3dWriteVector3dFieldInt32 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_write_vector3d_field_i4 ( filehandle, name, x, y, z ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - INTEGER*4, INTENT(IN) :: x(*) !< the array of x data to write - INTEGER*4, INTENT(IN) :: y(*) !< the array of y data to write - INTEGER*4, INTENT(IN) :: z(*) !< the array of z data to write -END FUNCTION + !> + !! See \ref H5Block3dWriteVector3dFieldInt64 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_write_vector3d_field_i8 ( filehandle, name, x, y, z ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + INTEGER*8, INTENT(IN) :: x(*) !< the array of x data to write + INTEGER*8, INTENT(IN) :: y(*) !< the array of y data to write + INTEGER*8, INTENT(IN) :: z(*) !< the array of z data to write + END FUNCTION h5bl_3d_write_vector3d_field_i8 -!> -!! See \ref H5Block3dReadVector3dFieldInt32 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5bl_3d_read_vector3d_field_i4 ( filehandle, name, x, y, z ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - INTEGER*4, INTENT(OUT) :: x(*) !< buffer to read the x data into - INTEGER*4, INTENT(OUT) :: y(*) !< buffer to read the y data into - INTEGER*4, INTENT(OUT) :: z(*) !< buffer to read the z data into -END FUNCTION + !> + !! See \ref H5Block3dReadVector3dFieldInt64 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_read_vector3d_field_i8 ( filehandle, name, x, y, z ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + INTEGER*8, INTENT(OUT) :: x(*) !< buffer to read the x data into + INTEGER*8, INTENT(OUT) :: y(*) !< buffer to read the y data into + INTEGER*8, INTENT(OUT) :: z(*) !< buffer to read the z data into + END FUNCTION h5bl_3d_read_vector3d_field_i8 -!> @} + !> + !! See \ref H5Block3dWriteScalarFieldInt32 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_write_scalar_field_i4 ( filehandle, name, buffer ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + INTEGER*4, INTENT(IN) :: buffer(*) !< the array of data + END FUNCTION h5bl_3d_write_scalar_field_i4 + + !> + !! See \ref H5Block3dReadScalarFieldInt32 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_read_scalar_field_i4 ( filehandle, name, buffer ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + INTEGER*4, INTENT(OUT) :: buffer(*) !< buffer to read the data into + END FUNCTION h5bl_3d_read_scalar_field_i4 + + !> + !! See \ref H5Block3dWriteVector3dFieldInt32 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_write_vector3d_field_i4 ( filehandle, name, x, y, z ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + INTEGER*4, INTENT(IN) :: x(*) !< the array of x data to write + INTEGER*4, INTENT(IN) :: y(*) !< the array of y data to write + INTEGER*4, INTENT(IN) :: z(*) !< the array of z data to write + END FUNCTION h5bl_3d_write_vector3d_field_i4 + + !> + !! See \ref H5Block3dReadVector3dFieldInt32 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5bl_3d_read_vector3d_field_i4 ( filehandle, name, x, y, z ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned at file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + INTEGER*4, INTENT(OUT) :: x(*) !< buffer to read the x data into + INTEGER*4, INTENT(OUT) :: y(*) !< buffer to read the y data into + INTEGER*4, INTENT(OUT) :: z(*) !< buffer to read the z data into + END FUNCTION h5bl_3d_read_vector3d_field_i4 + + !> @} + END INTERFACE diff --git a/src/include/H5Part.f90 b/src/include/H5Part.f90 index d75ece9..1a56a7f 100644 --- a/src/include/H5Part.f90 +++ b/src/include/H5Part.f90 @@ -1,127 +1,135 @@ -!!!!!!!! Setting up the Data Model !!!!!!!! +! +! Copyright (c) 2006-2013, The Regents of the University of California, +! through Lawrence Berkeley National Laboratory (subject to receipt of any +! required approvals from the U.S. Dept. of Energy) and the Paul Scherrer +! Institut (Switzerland). All rights reserved.! +! +! License: see file COPYING in top level of source distribution. +! + INTERFACE + !> + !! \ingroup h5part_model_f + !! + !! See \ref H5PartSetNumParticles + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5pt_setnpoints ( filehandle, npoints ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + INTEGER*8, INTENT(IN) :: npoints !< the number of particles on *this* processor + END FUNCTION h5pt_setnpoints + !> + !! \ingroup h5part_model_f + !! + !! See \ref H5PartSetNumParticlesStrided + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5pt_setnpoints_strided ( filehandle, npoints, stride ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + INTEGER*8, INTENT(IN) :: npoints !< the number of particles on *this* processor + INTEGER*8, INTENT(IN) :: stride !< the stride value (e.g. the number of fields in the particle data array) + END FUNCTION h5pt_setnpoints_strided -!> -!! \ingroup h5part_model_f -!! -!! See \ref H5PartSetNumParticles -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5pt_setnpoints ( filehandle, npoints ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open - INTEGER*8, INTENT(IN) :: npoints !< the number of particles on *this* processor -END FUNCTION + !> + !! \ingroup h5part_model_f + !! + !! See \ref H5PartGetNumDatasets + !! \return the number of datasets or error code + !< + INTEGER*8 FUNCTION h5pt_getndatasets (filehandle) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + END FUNCTION h5pt_getndatasets -!> -!! \ingroup h5part_model_f -!! -!! See \ref H5PartSetNumParticlesStrided -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5pt_setnpoints_strided ( filehandle, npoints, stride ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open - INTEGER*8, INTENT(IN) :: npoints !< the number of particles on *this* processor - INTEGER*8, INTENT(IN) :: stride !< the stride value (e.g. the number of fields in the particle data array) -END FUNCTION + !> + !! \ingroup h5part_model_f + !! + !! See \ref H5PartGetNumParticles + !! \return the number of particles or error code + !< + INTEGER*8 FUNCTION h5pt_getnpoints (filehandle) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + END FUNCTION h5pt_getnpoints -!> -!! \ingroup h5part_model_f -!! -!! See \ref H5PartGetNumDatasets -!! \return the number of datasets or error code -!< -INTEGER*8 FUNCTION h5pt_getndatasets (filehandle) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open -END FUNCTION + !> + !! \ingroup h5part_model_f + !! + !! See \ref H5PartGetDatasetName + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5pt_getdatasetname (filehandle,index,name) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + INTEGER*8, INTENT(IN) :: index !< index of dataset to query (starting from 0) + CHARACTER(LEN=*), INTENT(OUT) :: name !< buffer to read the dataset name into + END FUNCTION h5pt_getdatasetname -!> -!! \ingroup h5part_model_f -!! -!! See \ref H5PartGetNumParticles -!! \return the number of particles or error code -!< -INTEGER*8 FUNCTION h5pt_getnpoints (filehandle) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open -END FUNCTION + !> + !! \ingroup h5part_model_f + !! + !! See \ref H5PartGetDatasetInfo + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5pt_getdatasetinfo (filehandle, idx, name, type, num_elems) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + INTEGER*8,INTENT(IN) :: idx !< index of dataset being queried + CHARACTER(LEN=*), INTENT(OUT):: name !< name of datset + INTEGER*8,INTENT(OUT):: type !< type of datset + INTEGER*8,INTENT(OUT):: num_elems !< number of elements in the dataset + END FUNCTION h5pt_getdatasetinfo -!> -!! \ingroup h5part_model_f -!! -!! See \ref H5PartGetDatasetName -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5pt_getdatasetname (filehandle,index,name) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open - INTEGER*8, INTENT(IN) :: index !< index of dataset to query (starting from 0) - CHARACTER(LEN=*), INTENT(OUT) :: name !< buffer to read the dataset name into -END FUNCTION + !> + !! \ingroup h5part_model_f + !! + !! See \ref H5PartSetView + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5pt_setview (filehandle,start,end) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + INTEGER*8, INTENT(IN) :: start !< offset of the first particle in the view + INTEGER*8, INTENT(IN) :: end !< offset of the last particle in the view (inclusive) + END FUNCTION h5pt_setview -!> -!! \ingroup h5part_model_f -!! -!! See \ref H5PartGetDatasetInfo -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5pt_getdatasetinfo (filehandle, idx, name, type, num_elems) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - INTEGER*8,INTENT(IN) :: idx !< index of dataset being queried - CHARACTER(LEN=*), INTENT(OUT):: name !< name of datset - INTEGER*8,INTENT(OUT):: type !< type of datset - INTEGER*8,INTENT(OUT):: num_elems !< number of elements in the dataset -END FUNCTION + !> + !! \ingroup h5part_model_f + !! + !! See \ref H5PartSetViewIndices + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5pt_setview_indices (filehandle,indices,nelem) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + INTEGER*8, INTENT(IN) :: indices(*) !< list of indicies to select in this view + INTEGER*8, INTENT(IN) :: nelem !< number of particles in the list + END FUNCTION h5pt_setview_indices -!> -!! \ingroup h5part_model_f -!! -!! See \ref H5PartSetView -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5pt_setview (filehandle,start,end) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open - INTEGER*8, INTENT(IN) :: start !< offset of the first particle in the view - INTEGER*8, INTENT(IN) :: end !< offset of the last particle in the view (inclusive) -END FUNCTION + !> + !! \ingroup h5part_model_f + !! + !! See \ref H5PartResetView + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5pt_resetview (filehandle) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + END FUNCTION h5pt_resetview -!> -!! \ingroup h5part_model_f -!! -!! See \ref H5PartSetViewIndices -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5pt_setview_indices (filehandle,indices,nelem) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open - INTEGER*8, INTENT(IN) :: indices(*) !< list of indicies to select in this view - INTEGER*8, INTENT(IN) :: nelem !< number of particles in the list -END FUNCTION + !> + !! \ingroup h5part_model_f + !! + !! See \ref H5PartResetView + !! \return 1 if true, 0 if false, or error code + !< + INTEGER*8 FUNCTION h5pt_hasview (filehandle) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + END FUNCTION h5pt_hasview -!> -!! \ingroup h5part_model_f -!! -!! See \ref H5PartResetView -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5pt_resetview (filehandle) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open -END FUNCTION + !> + !! \ingroup h5part_model_f + !! + !! See \ref H5PartGetView + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5pt_getview (filehandle,start,end) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + INTEGER*8, INTENT(OUT) :: start !< buffer to store the offset of the first particle in the view + INTEGER*8, INTENT(OUT) :: end !< buffer to store the offset of the last particle in the view (inclusive) + END FUNCTION h5pt_getview -!> -!! \ingroup h5part_model_f -!! -!! See \ref H5PartResetView -!! \return 1 if true, 0 if false, or error code -!< -INTEGER*8 FUNCTION h5pt_hasview (filehandle) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open -END FUNCTION - -!> -!! \ingroup h5part_model_f -!! -!! See \ref H5PartGetView -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5pt_getview (filehandle,start,end) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open - INTEGER*8, INTENT(OUT) :: start !< buffer to store the offset of the first particle in the view - INTEGER*8, INTENT(OUT) :: end !< buffer to store the offset of the last particle in the view (inclusive) -END FUNCTION + END INTERFACE diff --git a/src/include/H5Part_io.f90 b/src/include/H5Part_io.f90 index 6535284..b9e03af 100644 --- a/src/include/H5Part_io.f90 +++ b/src/include/H5Part_io.f90 @@ -1,83 +1,91 @@ -!!!!!!!! Reading and Writing Datasets !!!!!!!! +! +! Copyright (c) 2006-2013, The Regents of the University of California, +! through Lawrence Berkeley National Laboratory (subject to receipt of any +! required approvals from the U.S. Dept. of Energy) and the Paul Scherrer +! Institut (Switzerland). All rights reserved.! +! +! License: see file COPYING in top level of source distribution. +! + INTERFACE + !> + !! \ingroup h5part_data_f + !! See \ref H5PartWriteDataFloat64 + !! \return 0 on success or error code + INTEGER*8 FUNCTION h5pt_writedata_r8 ( filehandle, name, data ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + REAL*8, INTENT(IN) :: data(*) !< the array of float64 data to write + END FUNCTION h5pt_writedata_r8 -!> -!! \ingroup h5part_data_f -!! See \ref H5PartWriteDataFloat64 -!! \return 0 on success or error code -INTEGER*8 FUNCTION h5pt_writedata_r8 ( filehandle, name, data ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - REAL*8, INTENT(IN) :: data(*) !< the array of float64 data to write -END FUNCTION + !> + !! \ingroup h5part_data_f + !! See \ref H5PartWriteDataFloat32 + !! \return 0 on success or error code + INTEGER*8 FUNCTION h5pt_writedata_r4 ( filehandle, name, data ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + REAL, INTENT(IN) :: data(*) !< the array of float32 data to write + END FUNCTION h5pt_writedata_r4 -!> -!! \ingroup h5part_data_f -!! See \ref H5PartWriteDataFloat32 -!! \return 0 on success or error code -INTEGER*8 FUNCTION h5pt_writedata_r4 ( filehandle, name, data ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - REAL, INTENT(IN) :: data(*) !< the array of float32 data to write -END FUNCTION + !> + !! \ingroup h5part_data_f + !! See \ref H5PartWriteDataInt64 + !! \return 0 on success or error code + INTEGER*8 FUNCTION h5pt_writedata_i8 ( filehandle, name, data ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + INTEGER*8, INTENT(IN) :: data(*) !< the array of int64 data to write + END FUNCTION h5pt_writedata_i8 -!> -!! \ingroup h5part_data_f -!! See \ref H5PartWriteDataInt64 -!! \return 0 on success or error code -INTEGER*8 FUNCTION h5pt_writedata_i8 ( filehandle, name, data ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - INTEGER*8, INTENT(IN) :: data(*) !< the array of int64 data to write -END FUNCTION - -!> -!! \ingroup h5part_data_f -!! See \ref H5PartWriteDataInt32 -!! \return 0 on success or error code -INTEGER*8 FUNCTION h5pt_writedata_i4 ( filehandle, name, data ) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - INTEGER, INTENT(IN) :: data(*) !< the array of int32 data to write -END FUNCTION + !> + !! \ingroup h5part_data_f + !! See \ref H5PartWriteDataInt32 + !! \return 0 on success or error code + INTEGER*8 FUNCTION h5pt_writedata_i4 ( filehandle, name, data ) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + INTEGER, INTENT(IN) :: data(*) !< the array of int32 data to write + END FUNCTION h5pt_writedata_i4 -!> -!! \ingroup h5part_data_f -!! See \ref H5PartReadDataFloat64 -!! \return 0 on success or error code -INTEGER*8 FUNCTION h5pt_readdata_r8 (filehandle,name,data) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - REAL*8, INTENT(OUT) :: data(*) !< array to read float64 data into -END FUNCTION + !> + !! \ingroup h5part_data_f + !! See \ref H5PartReadDataFloat64 + !! \return 0 on success or error code + INTEGER*8 FUNCTION h5pt_readdata_r8 (filehandle,name,data) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + REAL*8, INTENT(OUT) :: data(*) !< array to read float64 data into + END FUNCTION h5pt_readdata_r8 -!> -!! \ingroup h5part_data_f -!! See \ref H5PartReadDataFloat32 -!! \return 0 on success or error code -INTEGER*8 FUNCTION h5pt_readdata_r4 (filehandle,name,data) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - REAL, INTENT(OUT) :: data(*) !< array to read float32 data into -END FUNCTION + !> + !! \ingroup h5part_data_f + !! See \ref H5PartReadDataFloat32 + !! \return 0 on success or error code + INTEGER*8 FUNCTION h5pt_readdata_r4 (filehandle,name,data) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + REAL, INTENT(OUT) :: data(*) !< array to read float32 data into + END FUNCTION h5pt_readdata_r4 -!> -!! \ingroup h5part_data_f -!! See \ref H5PartReadDataInt64 -!! \return 0 on success or error code -INTEGER*8 FUNCTION h5pt_readdata_i8 (filehandle,name,data) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - INTEGER*8, INTENT(OUT) :: data(*) !< array to read int64 data into -END FUNCTION + !> + !! \ingroup h5part_data_f + !! See \ref H5PartReadDataInt64 + !! \return 0 on success or error code + INTEGER*8 FUNCTION h5pt_readdata_i8 (filehandle,name,data) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + INTEGER*8, INTENT(OUT) :: data(*) !< array to read int64 data into + END FUNCTION h5pt_readdata_i8 -!> -!! \ingroup h5part_data_f -!! See \ref H5PartReadDataInt32 -!! \return 0 on success or error code -INTEGER*8 FUNCTION h5pt_readdata_i4 (filehandle,name,data) - INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open - CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset - INTEGER, INTENT(OUT) :: data(*) !< array to read int32 data into -END FUNCTION + !> + !! \ingroup h5part_data_f + !! See \ref H5PartReadDataInt32 + !! \return 0 on success or error code + INTEGER*8 FUNCTION h5pt_readdata_i4 (filehandle,name,data) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + CHARACTER(LEN=*), INTENT(IN) :: name !< the name of the dataset + INTEGER, INTENT(OUT) :: data(*) !< array to read int32 data into + END FUNCTION h5pt_readdata_i4 + END INTERFACE diff --git a/src/include/H5_attribs.f90 b/src/include/H5_attribs.f90 index f98c45f..f646350 100644 --- a/src/include/H5_attribs.f90 +++ b/src/include/H5_attribs.f90 @@ -1,366 +1,401 @@ -! __ _ _ _ _ _ _ _ -! / _(_) | ___ __ _| |_| |_ _ __(_) |__ _ _| |_ ___ ___ -! | |_| | |/ _ \ / _` | __| __| '__| | '_ \| | | | __/ _ \/ __| -! | _| | | __/ | (_| | |_| |_| | | | |_) | |_| | || __/\__ \ -! |_| |_|_|\___| \__,_|\__|\__|_| |_|_.__/ \__,_|\__\___||___/ -! __ _ _ _ ___ _ __ _ _ -! / _` | | | |/ _ \ '__| | | | -! | (_| | |_| | __/ | | |_| | -! \__, |\__,_|\___|_| \__, | -! |_| |___/ +! +! Copyright (c) 2006-2013, The Regents of the University of California, +! through Lawrence Berkeley National Laboratory (subject to receipt of any +! required approvals from the U.S. Dept. of Energy) and the Paul Scherrer +! Institut (Switzerland). All rights reserved.! +! +! License: see file COPYING in top level of source distribution. +! + INTERFACE + ! __ _ _ _ _ _ _ _ + ! / _(_) | ___ __ _| |_| |_ _ __(_) |__ _ _| |_ ___ ___ + ! | |_| | |/ _ \ / _` | __| __| '__| | '_ \| | | | __/ _ \/ __| + ! | _| | | __/ | (_| | |_| |_| | | | |_) | |_| | || __/\__ \ + ! |_| |_|_|\___| \__,_|\__|\__|_| |_|_.__/ \__,_|\__\___||___/ + ! __ _ _ _ ___ _ __ _ _ + ! / _` | | | |/ _ \ '__| | | | + ! | (_| | |_| | __/ | | |_| | + ! \__, |\__,_|\___|_| \__, | + ! |_| |___/ + + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5GetNumFileAttribs + !! \return number of attributes or error code + !< + INTEGER*8 FUNCTION h5_getnfileattribs (filehandle) + INTEGER*8, INTENT(IN) :: filehandle !< file handle + END FUNCTION h5_getnfileattribs -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5GetNumFileAttribs -!! \return number of attributes or error code -!< -INTEGER*8 FUNCTION h5_getnfileattribs (filehandle) - INTEGER*8, INTENT(IN) :: filehandle !< file handle -END FUNCTION - -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5GetFileAttribInfo -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_getfileattribinfo (filehandle, idx, attrib_name, attrib_nelem) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - INTEGER*8,INTENT(IN) :: idx !< index of attribute being queried - CHARACTER(LEN=*), INTENT(OUT):: attrib_name !< name of attribute - INTEGER*8,INTENT(OUT):: attrib_type !< type of attribute - INTEGER*8,INTENT(OUT):: attrib_nelem !< number of elements in the attrib array -END FUNCTION + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5GetFileAttribInfo + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_getfileattribinfo (fhandle, idx, name, type, nelem) + INTEGER*8,INTENT(IN) :: fhandle !< file handle + INTEGER*8,INTENT(IN) :: idx !< index of attribute being queried + CHARACTER(LEN=*), INTENT(OUT):: name !< name of attribute + INTEGER*8,INTENT(OUT):: type !< type of attribute + INTEGER*8,INTENT(OUT):: nelem !< number of elements in the attrib array + END FUNCTION h5_getfileattribinfo -! __ _ _ _ _ _ _ _ -! / _(_) | ___ __ _| |_| |_ _ __(_) |__ _ _| |_ ___ ___ -! | |_| | |/ _ \ / _` | __| __| '__| | '_ \| | | | __/ _ \/ __| -! | _| | | __/ | (_| | |_| |_| | | | |_) | |_| | || __/\__ \ -! |_| |_|_|\___| \__,_|\__|\__|_| |_|_.__/ \__,_|\__\___||___/ -! _ __ _ _ -! (_) / /__ ___| |_ _ __(_)_ __ __ _ -! | | / / _ \ / __| __| '__| | '_ \ / _` | -! | |/ / (_) | \__ \ |_| | | | | | | (_| | -! |_/_/ \___/ |___/\__|_| |_|_| |_|\__, | -! |___/ + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5GetFileAttribInfoByName + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_getfileattribinfo_by_name (fhandle, name, type, nelem) + INTEGER*8,INTENT(IN) :: fhandle !< file handle + CHARACTER(LEN=*), INTENT(IN):: name !< name of attribute + INTEGER*8,INTENT(OUT):: type !< type of attribute + INTEGER*8,INTENT(OUT):: nelem !< number of elements in the attrib array + END FUNCTION h5_getfileattribinfo_by_name -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5WriteFileAttribString -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_writefileattrib_string (filehandle, attrib_name, attrib_value) - INTEGER*8, INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to write - CHARACTER(LEN=*), INTENT(IN) :: attrib_value!< attribute data to be written -END FUNCTION - -!> -!! \ingroup h5hut_attrib_f -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_readfileattrib_string (filehandle, attrib_name, attrib_value) - INTEGER*8, INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of the attribute to read - CHARACTER(LEN=*), INTENT(IN) :: attrib_value!< attribute data will be read into this array -END FUNCTION + ! __ _ _ _ _ _ _ _ + ! / _(_) | ___ __ _| |_| |_ _ __(_) |__ _ _| |_ ___ ___ + ! | |_| | |/ _ \ / _` | __| __| '__| | '_ \| | | | __/ _ \/ __| + ! | _| | | __/ | (_| | |_| |_| | | | |_) | |_| | || __/\__ \ + ! |_| |_|_|\___| \__,_|\__|\__|_| |_|_.__/ \__,_|\__\___||___/ + ! _ __ _ _ + ! (_) / /__ ___| |_ _ __(_)_ __ __ _ + ! | | / / _ \ / __| __| '__| | '_ \ / _` | + ! | |/ / (_) | \__ \ |_| | | | | | | (_| | + ! |_/_/ \___/ |___/\__|_| |_|_| |_|\__, | + ! |___/ -! __ _ _ _ _ _ _ _ -! / _(_) | ___ __ _| |_| |_ _ __(_) |__ _ _| |_ ___ ___ -! | |_| | |/ _ \ / _` | __| __| '__| | '_ \| | | | __/ _ \/ __| -! | _| | | __/ | (_| | |_| |_| | | | |_) | |_| | || __/\__ \ -! |_| |_|_|\___| \__,_|\__|\__|_| |_|_.__/ \__,_|\__\___||___/ -! _ __ _ -! (_) / /__ _ __ ___ __ _| | -! | | / / _ \ | '__/ _ \/ _` | | -! | |/ / (_) | | | | __/ (_| | | -! |_/_/ \___/ |_| \___|\__,_|_| + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5WriteFileAttribString + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_writefileattrib_string (filehandle, attrib_name, attrib_value) + INTEGER*8, INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to write + CHARACTER(LEN=*), INTENT(IN) :: attrib_value!< attribute data to be written + END FUNCTION h5_writefileattrib_string -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5WriteFileAttribFloat64 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_writefileattrib_r8 (filehandle, attrib_name, attrib_value, attrib_nelem) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read - REAL*8, INTENT(OUT):: attrib_value(*) !< attribute data to be written - INTEGER*8, INTENT(IN) :: attrib_nelem !< number of elements in data array -END FUNCTION + !> + !! \ingroup h5hut_attrib_f + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_readfileattrib_string (filehandle, attrib_name, attrib_value) + INTEGER*8, INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of the attribute to read + CHARACTER(LEN=*), INTENT(IN) :: attrib_value!< attribute data will be read into this array + END FUNCTION h5_readfileattrib_string -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5ReadFileAttribFloat64 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_readfileattrib_r8 (filehandle, attrib_name, attrib_value) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read - REAL*8, INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array -END FUNCTION + ! __ _ _ _ _ _ _ _ + ! / _(_) | ___ __ _| |_| |_ _ __(_) |__ _ _| |_ ___ ___ + ! | |_| | |/ _ \ / _` | __| __| '__| | '_ \| | | | __/ _ \/ __| + ! | _| | | __/ | (_| | |_| |_| | | | |_) | |_| | || __/\__ \ + ! |_| |_|_|\___| \__,_|\__|\__|_| |_|_.__/ \__,_|\__\___||___/ + ! _ __ _ + ! (_) / /__ _ __ ___ __ _| | + ! | | / / _ \ | '__/ _ \/ _` | | + ! | |/ / (_) | | | | __/ (_| | | + ! |_/_/ \___/ |_| \___|\__,_|_| -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5WriteFileAttribFloat32 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_writefileattrib_r4 (filehandle, attrib_name, attrib_value, attrib_nelem) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read - REAL*4, INTENT(OUT):: attrib_value(*) !< attribute data to be written - INTEGER*8, INTENT(IN) :: attrib_nelem !< number of elements in data array -END FUNCTION + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5WriteFileAttribFloat64 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_writefileattrib_r8 (filehandle, attrib_name, attrib_value, attrib_nelem) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read + REAL*8, INTENT(IN):: attrib_value(*) !< attribute data to be written + INTEGER*8, INTENT(IN) :: attrib_nelem !< number of elements in data array + END FUNCTION h5_writefileattrib_r8 -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5ReadFileAttribFloat32 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_readfileattrib_r4 ( filehandle, attrib_name, attrib_value ) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read - REAL*4, INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array -END FUNCTION + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5ReadFileAttribFloat64 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_readfileattrib_r8 (filehandle, attrib_name, attrib_value) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read + REAL*8, INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array + END FUNCTION h5_readfileattrib_r8 -! __ _ _ _ _ _ _ _ -! / _(_) | ___ __ _| |_| |_ _ __(_) |__ _ _| |_ ___ ___ -! | |_| | |/ _ \ / _` | __| __| '__| | '_ \| | | | __/ _ \/ __| -! | _| | | __/ | (_| | |_| |_| | | | |_) | |_| | || __/\__ \ -! |_| |_|_|\___| \__,_|\__|\__|_| |_|_.__/ \__,_|\__\___||___/ -! _ __ _ _ -! (_) / /__ (_)_ __ | |_ ___ __ _ ___ _ __ -! | | / / _ \ | | '_ \| __/ _ \/ _` |/ _ \ '__| -! | |/ / (_) | | | | | | || __/ (_| | __/ | -! |_/_/ \___/ |_|_| |_|\__\___|\__, |\___|_| -! |___/ + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5WriteFileAttribFloat32 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_writefileattrib_r4 (filehandle, attrib_name, attrib_value, attrib_nelem) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read + REAL*4, INTENT(IN):: attrib_value(*) !< attribute data to be written + INTEGER*8, INTENT(IN) :: attrib_nelem !< number of elements in data array + END FUNCTION h5_writefileattrib_r4 -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5WriteFileAttribInt64 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_writefileattrib_i8 (filehandle, attrib_name, attrib_value, attrib_nelem) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to write - INTEGER*8,INTENT(OUT):: attrib_value(*) !< attribute data to be written - INTEGER*8, INTENT(IN) :: attrib_nelem !< number of elements in data array -END FUNCTION + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5ReadFileAttribFloat32 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_readfileattrib_r4 ( filehandle, attrib_name, attrib_value ) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read + REAL*4, INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array + END FUNCTION h5_readfileattrib_r4 -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5ReadFileAttribInt64 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_readfileattrib_i8 (filehandle, attrib_name, attrib_value) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read - INTEGER*8,INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array -END FUNCTION + ! __ _ _ _ _ _ _ _ + ! / _(_) | ___ __ _| |_| |_ _ __(_) |__ _ _| |_ ___ ___ + ! | |_| | |/ _ \ / _` | __| __| '__| | '_ \| | | | __/ _ \/ __| + ! | _| | | __/ | (_| | |_| |_| | | | |_) | |_| | || __/\__ \ + ! |_| |_|_|\___| \__,_|\__|\__|_| |_|_.__/ \__,_|\__\___||___/ + ! _ __ _ _ + ! (_) / /__ (_)_ __ | |_ ___ __ _ ___ _ __ + ! | | / / _ \ | | '_ \| __/ _ \/ _` |/ _ \ '__| + ! | |/ / (_) | | | | | | || __/ (_| | __/ | + ! |_/_/ \___/ |_|_| |_|\__\___|\__, |\___|_| + ! |___/ -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5WriteFileAttribInt32 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_writefileattrib_i4 (filehandle, attrib_name, attrib_value, attrib_nelem) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to write - INTEGER*8,INTENT(OUT):: attrib_type !< type of attribute - INTEGER*4,INTENT(OUT):: attrib_value(*) !< attribute data to be written - INTEGER*8, INTENT(IN) :: attrib_nelem !< number of elements in data array -END FUNCTION + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5WriteFileAttribInt64 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_writefileattrib_i8 (filehandle, attrib_name, attrib_value, attrib_nelem) + INTEGER*8, INTENT(IN) :: filehandle !< file handle + CHARACTER (LEN=*), INTENT(IN) :: attrib_name!< name of attribute to write + INTEGER*8, INTENT(IN):: attrib_value(*) !< attribute data to be written + INTEGER*8, INTENT(IN) :: attrib_nelem !< number of elements in data array + END FUNCTION h5_writefileattrib_i8 -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5ReadFileAttribInt32 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_readfileattrib_i4 (filehandle, attrib_name, attrib_value) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read - INTEGER*4,INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array -END FUNCTION + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5ReadFileAttribInt64 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_readfileattrib_i8 (filehandle, attrib_name, attrib_value) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read + INTEGER*8,INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array + END FUNCTION h5_readfileattrib_i8 -! _ _ _ _ _ _ -! ___| |_ ___ _ __ __ _| |_| |_ _ __(_) |__ _ _| |_ ___ ___ -! / __| __/ _ \ '_ \ / _` | __| __| '__| | '_ \| | | | __/ _ \/ __| -! \__ \ || __/ |_) | | (_| | |_| |_| | | | |_) | |_| | || __/\__ \ -! |___/\__\___| .__/ \__,_|\__|\__|_| |_|_.__/ \__,_|\__\___||___/ -! |_| -! __ _ _ _ ___ _ __ _ _ -! / _` | | | |/ _ \ '__| | | | -! | (_| | |_| | __/ | | |_| | -! \__, |\__,_|\___|_| \__, | -! |_| |___/ + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5WriteFileAttribInt32 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_writefileattrib_i4 (filehandle, attrib_name, attrib_value, attrib_nelem) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER (LEN=*), INTENT(IN) :: attrib_name !< name of attribute to write + INTEGER*4, INTENT(IN) :: attrib_value(*) !< attribute data to be written + INTEGER*8, INTENT(IN) :: attrib_nelem !< number of elements in data array + END FUNCTION h5_writefileattrib_i4 -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5GetNumFileAttribs -!! \return number of attributes or error code -!< -INTEGER*8 FUNCTION h5_getnstepattribs (filehandle) - INTEGER*8, INTENT(IN) :: filehandle !< file handle -END FUNCTION - -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5GetFileAttribInfo -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_getstepattribinfo (filehandle, idx, attrib_name, attrib_nelem) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - INTEGER*8,INTENT(IN) :: idx !< index of attribute being queried - CHARACTER(LEN=*), INTENT(OUT):: attrib_name !< name of attribute - INTEGER*8,INTENT(OUT):: attrib_nelem !< number of elements in the attrib array -END FUNCTION + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5ReadFileAttribInt32 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_readfileattrib_i4 (filehandle, attrib_name, attrib_value) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read + INTEGER*4,INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array + END FUNCTION h5_readfileattrib_i4 -! _ _ _ _ _ _ -! ___| |_ ___ _ __ __ _| |_| |_ _ __(_) |__ _ _| |_ ___ ___ -! / __| __/ _ \ '_ \ / _` | __| __| '__| | '_ \| | | | __/ _ \/ __| -! \__ \ || __/ |_) | | (_| | |_| |_| | | | |_) | |_| | || __/\__ \ -! |___/\__\___| .__/ \__,_|\__|\__|_| |_|_.__/ \__,_|\__\___||___/ -! |_| -! _ __ _ _ -! (_) / /__ ___| |_ _ __(_)_ __ __ _ -! | | / / _ \ / __| __| '__| | '_ \ / _` | -! | |/ / (_) | \__ \ |_| | | | | | | (_| | -! |_/_/ \___/ |___/\__|_| |_|_| |_|\__, | -! |___/ + ! _ _ _ _ _ _ + ! ___| |_ ___ _ __ __ _| |_| |_ _ __(_) |__ _ _| |_ ___ ___ + ! / __| __/ _ \ '_ \ / _` | __| __| '__| | '_ \| | | | __/ _ \/ __| + ! \__ \ || __/ |_) | | (_| | |_| |_| | | | |_) | |_| | || __/\__ \ + ! |___/\__\___| .__/ \__,_|\__|\__|_| |_|_.__/ \__,_|\__\___||___/ + ! |_| + ! __ _ _ _ ___ _ __ _ _ + ! / _` | | | |/ _ \ '__| | | | + ! | (_| | |_| | __/ | | |_| | + ! \__, |\__,_|\___|_| \__, | + ! |_| |___/ -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5WriteStepAttribString -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_writestepattrib_string (filehandle, attrib_name, attrib_value) - INTEGER*8, INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to write - CHARACTER(LEN=*), INTENT(IN) :: attrib_value!< attribute data to be written -END FUNCTION - -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5ReadStepAttribString -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_readstepattrib_string (filehandle, attrib_name, attrib_value) - INTEGER*8, INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of the attribute to read - CHARACTER(LEN=*), INTENT(IN) :: attrib_value!< attribute data will be read into this array -END FUNCTION + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5GetNumFileAttribs + !! \return number of attributes or error code + !< + INTEGER*8 FUNCTION h5_getnstepattribs (filehandle) + INTEGER*8, INTENT(IN) :: filehandle !< file handle + END FUNCTION h5_getnstepattribs -! _ _ _ _ _ _ -! ___| |_ ___ _ __ __ _| |_| |_ _ __(_) |__ _ _| |_ ___ ___ -! / __| __/ _ \ '_ \ / _` | __| __| '__| | '_ \| | | | __/ _ \/ __| -! \__ \ || __/ |_) | | (_| | |_| |_| | | | |_) | |_| | || __/\__ \ -! |___/\__\___| .__/ \__,_|\__|\__|_| |_|_.__/ \__,_|\__\___||___/ -! |_| -! _ __ _ -! (_) / /__ _ __ ___ __ _| | -! | | / / _ \ | '__/ _ \/ _` | | -! | |/ / (_) | | | | __/ (_| | | -! |_/_/ \___/ |_| \___|\__,_|_| + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5GetFileAttribInfo + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_getstepattribinfo (filehandle, idx, name, type, nelem) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + INTEGER*8,INTENT(IN) :: idx !< index of attribute being queried + CHARACTER(LEN=*), INTENT(OUT):: name !< name of attribute + INTEGER*8,INTENT(OUT):: type !< type of attribute + INTEGER*8,INTENT(OUT):: nelem !< number of elements in the attrib array + END FUNCTION h5_getstepattribinfo -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5WriteStepAttribFloat64 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_writestepattrib_r8 (filehandle, attrib_name, attrib_value, attrib_nelem) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read - REAL*8, INTENT(OUT):: attrib_value(*) !< attribute data to be written - INTEGER*8, INTENT(IN) :: attrib_nelem !< number of elements in data array -END FUNCTION + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5GetStepAttribInfoByName + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_getstepattribinfo_by_name (fhandle, name, type, nelem) + INTEGER*8,INTENT(IN) :: fhandle !< file handle + CHARACTER(LEN=*), INTENT(IN):: name !< name of attribute + INTEGER*8,INTENT(OUT):: type !< type of attribute + INTEGER*8,INTENT(OUT):: nelem !< number of elements in the attrib array + END FUNCTION h5_getstepattribinfo_by_name -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5ReadStepAttribFloat64 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_readstepattrib_r8 (filehandle, attrib_name, attrib_value) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read - REAL*8, INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array -END FUNCTION + ! _ _ _ _ _ _ + ! ___| |_ ___ _ __ __ _| |_| |_ _ __(_) |__ _ _| |_ ___ ___ + ! / __| __/ _ \ '_ \ / _` | __| __| '__| | '_ \| | | | __/ _ \/ __| + ! \__ \ || __/ |_) | | (_| | |_| |_| | | | |_) | |_| | || __/\__ \ + ! |___/\__\___| .__/ \__,_|\__|\__|_| |_|_.__/ \__,_|\__\___||___/ + ! |_| + ! _ __ _ _ + ! (_) / /__ ___| |_ _ __(_)_ __ __ _ + ! | | / / _ \ / __| __| '__| | '_ \ / _` | + ! | |/ / (_) | \__ \ |_| | | | | | | (_| | + ! |_/_/ \___/ |___/\__|_| |_|_| |_|\__, | + ! |___/ -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5WriteStepAttribFloat32 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_writestepattrib_r4 (filehandle, attrib_name, attrib_value, attrib_nelem) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read - REAL*4, INTENT(OUT):: attrib_value(*) !< attribute data to be written - INTEGER*8, INTENT(IN) :: attrib_nelem !< number of elements in data array -END FUNCTION + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5WriteStepAttribString + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_writestepattrib_string (filehandle, attrib_name, attrib_value) + INTEGER*8, INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to write + CHARACTER(LEN=*), INTENT(IN) :: attrib_value!< attribute data to be written + END FUNCTION h5_writestepattrib_string -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5ReadStepAttribFloat32 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_readstepattrib_r4 ( filehandle, attrib_name, attrib_value ) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read - REAL*4, INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array -END FUNCTION + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5ReadStepAttribString + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_readstepattrib_string (filehandle, attrib_name, attrib_value) + INTEGER*8, INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of the attribute to read + CHARACTER(LEN=*), INTENT(IN) :: attrib_value!< attribute data will be read into this array + END FUNCTION h5_readstepattrib_string -! _ _ _ _ _ _ -! ___| |_ ___ _ __ __ _| |_| |_ _ __(_) |__ _ _| |_ ___ ___ -! / __| __/ _ \ '_ \ / _` | __| __| '__| | '_ \| | | | __/ _ \/ __| -! \__ \ || __/ |_) | | (_| | |_| |_| | | | |_) | |_| | || __/\__ \ -! |___/\__\___| .__/ \__,_|\__|\__|_| |_|_.__/ \__,_|\__\___||___/ -! |_| -! _ __ _ _ -! (_) / /__ (_)_ __ | |_ ___ __ _ ___ _ __ -! | | / / _ \ | | '_ \| __/ _ \/ _` |/ _ \ '__| -! | |/ / (_) | | | | | | || __/ (_| | __/ | -! |_/_/ \___/ |_|_| |_|\__\___|\__, |\___|_| -! |___/ + ! _ _ _ _ _ _ + ! ___| |_ ___ _ __ __ _| |_| |_ _ __(_) |__ _ _| |_ ___ ___ + ! / __| __/ _ \ '_ \ / _` | __| __| '__| | '_ \| | | | __/ _ \/ __| + ! \__ \ || __/ |_) | | (_| | |_| |_| | | | |_) | |_| | || __/\__ \ + ! |___/\__\___| .__/ \__,_|\__|\__|_| |_|_.__/ \__,_|\__\___||___/ + ! |_| + ! _ __ _ + ! (_) / /__ _ __ ___ __ _| | + ! | | / / _ \ | '__/ _ \/ _` | | + ! | |/ / (_) | | | | __/ (_| | | + ! |_/_/ \___/ |_| \___|\__,_|_| -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5WriteStepAttribInt64 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_writestepattrib_i8 (filehandle, attrib_name, attrib_value, attrib_nelem) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to write - INTEGER*8,INTENT(OUT):: attrib_value(*) !< attribute data to be written - INTEGER*8, INTENT(IN) :: attrib_nelem !< number of elements in data array -END FUNCTION + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5WriteStepAttribFloat64 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_writestepattrib_r8 (filehandle, attrib_name, attrib_value, attrib_nelem) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read + REAL*8, INTENT(IN):: attrib_value(*) !< attribute data to be written + INTEGER*8, INTENT(IN) :: attrib_nelem !< number of elements in data array + END FUNCTION h5_writestepattrib_r8 -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5ReadStepAttribInt64 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_readstepattrib_i8 (filehandle, attrib_name, attrib_value) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read - INTEGER*8,INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array -END FUNCTION + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5ReadStepAttribFloat64 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_readstepattrib_r8 (filehandle, attrib_name, attrib_value) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read + REAL*8, INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array + END FUNCTION h5_readstepattrib_r8 -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5WriteStepAttribInt32 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_writestepattrib_i4 (filehandle, attrib_name, attrib_value, attrib_nelem) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to write - INTEGER*4,INTENT(OUT):: attrib_value(*) !< attribute data to be written - INTEGER*8, INTENT(IN) :: attrib_nelem !< number of elements in data array -END FUNCTION + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5WriteStepAttribFloat32 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_writestepattrib_r4 (filehandle, attrib_name, attrib_value, attrib_nelem) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read + REAL*4, INTENT(IN):: attrib_value(*) !< attribute data to be written + INTEGER*8, INTENT(IN) :: attrib_nelem !< number of elements in data array + END FUNCTION h5_writestepattrib_r4 -!> -!! \ingroup h5hut_attrib_f -!! See \ref H5ReadStepAttribInt32 -!! \return 0 on success or error code -!< -INTEGER*8 FUNCTION h5_readstepattrib_i4 (filehandle, attrib_name, attrib_value) - INTEGER*8,INTENT(IN) :: filehandle !< file handle - CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read - INTEGER*4,INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array -END FUNCTION + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5ReadStepAttribFloat32 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_readstepattrib_r4 ( filehandle, attrib_name, attrib_value ) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read + REAL*4, INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array + END FUNCTION h5_readstepattrib_r4 + + ! _ _ _ _ _ _ + ! ___| |_ ___ _ __ __ _| |_| |_ _ __(_) |__ _ _| |_ ___ ___ + ! / __| __/ _ \ '_ \ / _` | __| __| '__| | '_ \| | | | __/ _ \/ __| + ! \__ \ || __/ |_) | | (_| | |_| |_| | | | |_) | |_| | || __/\__ \ + ! |___/\__\___| .__/ \__,_|\__|\__|_| |_|_.__/ \__,_|\__\___||___/ + ! |_| + ! _ __ _ _ + ! (_) / /__ (_)_ __ | |_ ___ __ _ ___ _ __ + ! | | / / _ \ | | '_ \| __/ _ \/ _` |/ _ \ '__| + ! | |/ / (_) | | | | | | || __/ (_| | __/ | + ! |_/_/ \___/ |_|_| |_|\__\___|\__, |\___|_| + ! |___/ + + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5WriteStepAttribInt64 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_writestepattrib_i8 (filehandle, attrib_name, attrib_value, attrib_nelem) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to write + INTEGER*8,INTENT(IN):: attrib_value(*) !< attribute data to be written + INTEGER*8, INTENT(IN) :: attrib_nelem !< number of elements in data array + END FUNCTION h5_writestepattrib_i8 + + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5ReadStepAttribInt64 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_readstepattrib_i8 (filehandle, attrib_name, attrib_value) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read + INTEGER*8,INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array + END FUNCTION h5_readstepattrib_i8 + + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5WriteStepAttribInt32 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_writestepattrib_i4 (filehandle, attrib_name, attrib_value, attrib_nelem) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to write + INTEGER*4,INTENT(IN):: attrib_value(*) !< attribute data to be written + INTEGER*8, INTENT(IN) :: attrib_nelem !< number of elements in data array + END FUNCTION h5_writestepattrib_i4 + + !> + !! \ingroup h5hut_attrib_f + !! See \ref H5ReadStepAttribInt32 + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_readstepattrib_i4 (filehandle, attrib_name, attrib_value) + INTEGER*8,INTENT(IN) :: filehandle !< file handle + CHARACTER(LEN=*), INTENT(IN) :: attrib_name !< name of attribute to read + INTEGER*4,INTENT(OUT):: attrib_value(*) !< attribute data will be read into this array + END FUNCTION h5_readstepattrib_i4 + + END INTERFACE diff --git a/src/include/H5_const.f90 b/src/include/H5_const.f90 index 5ccf48a..9c0b1ee 100644 --- a/src/include/H5_const.f90 +++ b/src/include/H5_const.f90 @@ -1,61 +1,49 @@ +! +! Copyright (c) 2006-2013, The Regents of the University of California, +! through Lawrence Berkeley National Laboratory (subject to receipt of any +! required approvals from the U.S. Dept. of Energy) and the Paul Scherrer +! Institut (Switzerland). All rights reserved.! +! +! License: see file COPYING in top level of source distribution. +! + INTEGER*8, PARAMETER :: H5_O_RDWR = Z'00000001' + INTEGER*8, PARAMETER :: H5_O_RDONLY = Z'00000002' + INTEGER*8, PARAMETER :: H5_O_WRONLY = Z'00000004' + INTEGER*8, PARAMETER :: H5_O_APPEND = Z'00000008' -INTEGER*8 :: H5_STRING_T -INTEGER*8 :: H5_INT16_T -INTEGER*8 :: H5_INT32_T -INTEGER*8 :: H5_INT64_t -INTEGER*8 :: H5_FLOAT32_T -INTEGER*8 :: H5_FLOAT64_T + INTEGER*8, PARAMETER :: H5_VFD_MPIPOSIX = Z'00000010' + INTEGER*8, PARAMETER :: H5_VFD_MPIIO_IND = Z'00000020' + INTEGER*8, PARAMETER :: H5_VFD_CORE = Z'00000040' -PARAMETER (H5_STRING_T = 1) -PARAMETER (H5_INT16_T = 2) -PARAMETER (H5_INT32_T = 3) -PARAMETER (H5_INT64_T = 4) -PARAMETER (H5_FLOAT32_T = 5) -PARAMETER (H5_FLOAT64_T = 6) + INTEGER*8, PARAMETER :: H5_PROP_DEFAULT = 0 -INTEGER*8 :: H5_MAX_NAME_LEN -PARAMETER (H5_MAX_NAME_LEN = 64) + INTEGER*8, PARAMETER :: H5_STRING_T = 1 + INTEGER*8, PARAMETER :: H5_INT16_T = 2 + INTEGER*8, PARAMETER :: H5_INT32_T = 3 + INTEGER*8, PARAMETER :: H5_INT64_T = 4 + INTEGER*8, PARAMETER :: H5_FLOAT32_T = 5 + INTEGER*8, PARAMETER :: H5_FLOAT64_T = 6 -INTEGER*8 :: H5_SUCCESS -INTEGER*8 :: H5_OK -INTEGER*8 :: H5_NOK -INTEGER*8 :: H5_FAILURE -INTEGER*8 :: H5_ERR_BADF -INTEGER*8 :: H5_ERR_NOMEM -INTEGER*8 :: H5_ERR_INVAL -INTEGER*8 :: H5_ERR_BADFD + INTEGER*8, PARAMETER :: H5_MAX_NAME_LEN = 64 -INTEGER*8 :: H5_ERR_LAYOUT -INTEGER*8 :: H5_ERR_NOENTRY + INTEGER*8, PARAMETER :: H5_SUCCESS = 0 + INTEGER*8, PARAMETER :: H5_OK = H5_SUCCESS + INTEGER*8, PARAMETER :: H5_NOK = -1 + INTEGER*8, PARAMETER :: H5_FAILURE = -2 + INTEGER*8, PARAMETER :: H5_ERR_BADF = -9 + INTEGER*8, PARAMETER :: H5_ERR_NOMEM = -12 + INTEGER*8, PARAMETER :: H5_ERR_INVAL = -22 + INTEGER*8, PARAMETER :: H5_ERR_BADFD = -77 + + INTEGER*8, PARAMETER :: H5_ERR_LAYOUT = -100 + INTEGER*8, PARAMETER :: H5_ERR_NOENTRY = -101 -INTEGER*8 :: H5_ERR_MPI -INTEGER*8 :: H5_ERR_HDF5 -INTEGER*8 :: H5_ERR_H5 -INTEGER*8 :: H5_ERR_H5PART -INTEGER*8 :: H5_ERR_H5BLOCK -INTEGER*8 :: H5_ERR_H5FED - -INTEGER*8 :: H5_ERR_INTERNAL -INTEGER*8 :: H5_ERR_NOT_IMPLEMENTED - -PARAMETER (H5_SUCCESS = 0) -PARAMETER (H5_OK = H5_SUCCESS) -PARAMETER (H5_NOK = -1) -PARAMETER (H5_FAILURE = -2) -PARAMETER (H5_ERR_BADF = -9) -PARAMETER (H5_ERR_NOMEM = -12) -PARAMETER (H5_ERR_INVAL = -22) -PARAMETER (H5_ERR_BADFD = -77) - -PARAMETER (H5_ERR_LAYOUT = -100) -PARAMETER (H5_ERR_NOENTRY = -101) - -PARAMETER (H5_ERR_MPI = -201) -PARAMETER (H5_ERR_HDF5 = -202) -PARAMETER (H5_ERR_H5 = -203) -PARAMETER (H5_ERR_H5PART = -204) -PARAMETER (H5_ERR_H5BLOCK = -205) -PARAMETER (H5_ERR_H5FED = -206) - -PARAMETER (H5_ERR_INTERNAL = -253) -PARAMETER (H5_ERR_NOT_IMPLEMENTED = -254) + INTEGER*8, PARAMETER :: H5_ERR_MPI = -201 + INTEGER*8, PARAMETER :: H5_ERR_HDF5 = -202 + INTEGER*8, PARAMETER :: H5_ERR_H5 = -203 + INTEGER*8, PARAMETER :: H5_ERR_H5PART = -204 + INTEGER*8, PARAMETER :: H5_ERR_H5BLOCK = -205 + INTEGER*8, PARAMETER :: H5_ERR_H5FED = -206 + + INTEGER*8, PARAMETER :: H5_ERR_INTERNAL = -253 + INTEGER*8, PARAMETER :: H5_ERR_NOT_IMPLEMENTED = -254 diff --git a/src/include/H5_model.f90 b/src/include/H5_model.f90 new file mode 100644 index 0000000..69a7630 --- /dev/null +++ b/src/include/H5_model.f90 @@ -0,0 +1,39 @@ + INTERFACE + !> + !! \ingroup h5hut_model_f + !! See \ref H5HasStep + !! \return 0 on success or H5_FAILURE + !< + LOGICAL FUNCTION h5_hasstep (filehandle,step) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + INTEGER*8, INTENT(IN) :: step !< a timestep value >= 1 + END FUNCTION h5_hasstep + + !> + !! \ingroup h5hut_model_f + !! See \ref H5SetStep + !! \return 0 on success or error code + !< + INTEGER*8 FUNCTION h5_setstep (filehandle,step) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + INTEGER*8, INTENT(IN) :: step !< a timestep value >= 1 + END FUNCTION h5_setstep + + !> + !! \ingroup h5hut_model_f + !! See \ref H5GetStep + !! \return the the current step or \c H5_FAILURE + !< + INTEGER*8 FUNCTION h5_getstep (filehandle) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + END FUNCTION h5_getstep + + !> + !! \ingroup h5hut_model_f + !! See \ref H5GetNumSteps + !! \return the number of steps or error code + !< + INTEGER*8 FUNCTION h5_getnsteps (filehandle) + INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open + END FUNCTION h5_getnsteps + END INTERFACE diff --git a/src/include/H5hut.f90 b/src/include/H5hut.f90 new file mode 100644 index 0000000..da3ab03 --- /dev/null +++ b/src/include/H5hut.f90 @@ -0,0 +1,22 @@ +! +! Copyright (c) 2006-2013, The Regents of the University of California, +! through Lawrence Berkeley National Laboratory (subject to receipt of any +! required approvals from the U.S. Dept. of Energy) and the Paul Scherrer +! Institut (Switzerland). All rights reserved.! +! +! License: see file COPYING in top level of source distribution. +! +MODULE H5hut + include 'H5_const.f90' + + include 'H5.f90' + include 'H5_attribs.f90' + include 'H5_model.f90' + + include 'H5Part.f90' + include 'H5Part_io.f90' + + include 'H5Block.f90' + include 'H5Block_attribs.f90' + include 'H5Block_io.f90' +END MODULE H5hut