summaryrefslogtreecommitdiff
path: root/fortran/src/README
diff options
context:
space:
mode:
Diffstat (limited to 'fortran/src/README')
-rw-r--r--fortran/src/README134
1 files changed, 134 insertions, 0 deletions
diff --git a/fortran/src/README b/fortran/src/README
new file mode 100644
index 0000000..a258e07
--- /dev/null
+++ b/fortran/src/README
@@ -0,0 +1,134 @@
+===================================
+README for the Fortran APIs to HDF5
+===================================
+
+This directory contains Fortran APIs for HDF5 Library functionality.
+A complete list of implemented Fortran subroutines can be found in the HDF5
+Reference Manual.
+
+About the source code organization
+==================================
+
+The Fortran APIs are organized in modules parallel to the HDF5 Interfaces.
+Each module is in a separate file with the name H5*ff.F90. Corresponding C
+stubs are in the H5*f.c files. For example, the Fortran File APIs are in
+the file H5Fff.F90 and the corresponding C stubs are in the file H5Ff.c.
+
+Each module contains Fortran definitions of the constants, interfaces to
+the subroutines if needed, and the subroutines themselves.
+
+Users must use constant names in their programs instead of the numerical
+values, as the numerical values are subject to change without notice.
+
+Quick overview of the Fortran APIs
+==============================================
+
+* An in-depth description of each Fortran API and its parameters can
+ be found in the HDF5 Reference Manual.
+
+* The Fortran APIs come in the form of Fortran subroutines.
+
+* Each Fortran subroutine name is derived from the corresponding C function
+ name by adding "_f" to the name. For example, the name of the C function
+ to create an HDF5 file is H5Fcreate; the corresponding Fortran subroutine
+ is h5fcreate_f.
+
+* The parameter list for each Fortran subroutine usually has two more parameters
+ than the corresponding C function. These additional parameters typically hold
+ the return value and an error code. The order of the Fortran subroutine
+ parameters may differ from the order of the C function parameters.
+
+ The Fortran subroutine parameters are usually listed in the following order:
+ -- required input parameters,
+ -- output parameters, including return value and error code, and
+ optional input parameters.
+
+ For example, the C function to create a dataset has the following
+ prototype:
+
+ hid_t H5Dcreate2(hid_it loc_id, char *name, hid_t type_id,
+ hid_t space_id, hid_t link_creation_prp, hid_t dset_creation_prp,
+ hid_t dset_access_prop);
+
+ The corresponding Fortran subroutine has the following form:
+
+ SUBROUTINE h5dcreate_f(loc_id, name, type_id, space_id, dset_id, &
+ hdferr, dset_creation_prp, link_creation_prp, dset_access_prop)
+
+ The first four parameters of the Fortran subroutine correspond to the
+ C function parameters. The fifth parameter dset_id is an output
+ parameter and contains a valid dataset identifier if the value of the
+ sixth output parameter, hdferr, indicates successful completion.
+ (Error code descriptions are provided with the subroutine descriptions
+ in the Reference Manual.) The last three input parameters are optional
+ and may be omitted, resulting in default values being used.
+
+* Parameters to the Fortran subroutines typically include
+ predefined datatypes (see the build-time generated file
+ H5fortran_types.F90 for a complete listing):
+
+ INTEGER(HID_T) compares with hid_t type in HDF5 C APIs
+ INTEGER(HSIZE_T) compares with hsize_t in HDF5 C APIs
+ INTEGER(HSSIZE_T) compares with hssize_t in HDF5 C APIs
+ INTEGER(SIZE_T) compares with the C size_t type
+
+ These integer types usually correspond to 4 or 8 byte integers,
+ depending on the Fortran compiler and corresponding HDF5
+ C library definitions.
+
+* Each Fortran application must call the h5open_f subroutine to
+ initialize the Fortran predefined datatypes before calling the HDF5 Fortran
+ subroutines. The application should call the h5close_f subroutine
+ after all calls to the HDF5 Fortran Library.
+
+* When a C application reads data stored from a Fortran program, the data
+ will appear to be transposed due to the difference in the C - Fortran
+ storage order. For example, if Fortran writes a 4x6 two-dimensional dataset
+ to the file, a C program will read it as a 6x4 two-dimensional dataset into
+ memory. The HDF5 C utilities h5dump and h5ls display transposed data, if
+ data is written from a Fortran program.
+
+* Fortran indices are 1 based.
+
+============================
+FOR DEVELOPERS
+============================
+
+Procedure to add a new function
+----------------------------------
+
+(1) Edit the fortran/src/H5*ff.F90 file
+(2) Edit the fortran/src/H5*f.c file
+(3) Edit the fortran/src/H5f90proto.h file
+(4) Add the new function to fortran/src/hdf5_fortrandll.def.in
+
+Procedure for passing C variables to Fortran
+---------------------------------------------
+
+(1) Find the C struct name you are interested in:
+ (a) src/H5public.h if it is a generic type, i.e. H5_*
+ or
+ (b) src/H5*public.h if is a specific type, i.e. H5*_
+
+(2) Put that structure into an array that will be passed to fortran in:
+ (a) fortran/src/H5_f.c (add to nh5init_flags_c subroutine)
+ (b) edit fortran/src/H5f90proto.h and edit nh5init_flags_c interface call
+
+(3) Edit the function call in fortran/src/H5_ff.F90
+ (a) edit the call: FUNCTION h5init_flags_c
+ (b) edit h5init_flags_c call in h5open_f to match the number of arguments passing
+
+(4) add the size of the array and array to fortran/src/H5f90global.F90
+ - must match the size found it H5_f.c
+
+NOTE: To just add a default C value argument, do steps (2a) and (4)
+
+
+Procedure for adding a new file to the repository
+--------------------------------------------------
+
+Add the name of the file to the:
+ (1) Makefile.am located in the same directory as the newfile
+ (2) CMakeLists.txt located in the same directory as the newfile
+ (3) MANIFEST located in the top level directory
+