diff --git a/bindings/fortran/adios2_mod.f90 b/bindings/fortran/adios2_mod.f90 new file mode 100644 index 0000000000000000000000000000000000000000..b4e7d502eee390de466d3001f23229acb22dac96 --- /dev/null +++ b/bindings/fortran/adios2_mod.f90 @@ -0,0 +1,54 @@ +module adios2 + + #include "adios2_parameters.f90" + + ! Overload adios2_init functions + interface adios2_init + #ifdef ADIOS2_USE_MPI_Fortran + module procedure adios2_init_mpi + module procedure adios2_init_config_mpi + #else + module procedure adios2_init_nompi + module procedure adios2_init_config_nompi + #endif + end interface + + #ifdef ADIOS2_USE_MPI_Fortran + subroutine adios2_init_mpi(adios, comm, debug_mode, ierr) + implicit none + integer, intent(out) :: adios + integer, intent(in) :: comm + logical, intent(in), optional :: debug_mode + integer, intent(out), optional :: ierr + end + + subroutine adios2_init_config_mpi(adios, config_file, comm, debug_mode & + & ierr) + implicit none + integer, intent(out) :: adios + character(*), intent(in) :: config_file + integer, intent(in) :: comm + logical, intent(in), optional :: debug_mode + integer, intent(out), optional :: ierr + end + + #else + subroutine adios2_init_config_nompi(adios, config_file, debug_mode, & + & ierr) + implicit none + integer, intent(out) :: adios + character(*), intent(in) :: config_file + logical, intent(in), optional :: debug_mode + integer, intent(out), optional :: ierr + end + + subroutine adios2_init_nompi(adios, debug_mode, ierr) + implicit none + integer, intent(out) :: adios + logical, intent(in), optional :: debug_mode + integer, intent(out), optional :: ierr + end + + +end module + diff --git a/bindings/fortran/adios2_parameters.f90 b/bindings/fortran/adios2_parameters.f90 new file mode 100644 index 0000000000000000000000000000000000000000..3941c0fccd1d46855dd232db1851550ba63a770f --- /dev/null +++ b/bindings/fortran/adios2_parameters.f90 @@ -0,0 +1,25 @@ + +! Debug mode +integer, parameter :: adios2_debug_mode_on = 0 +integer, parameter :: adios2_debug_mode_off = 1 + +! Type +integer, parameter :: adios2_type_character = 0 +integer, parameter :: adios2_type_integer = 1 +integer, parameter :: adios2_type_real = 2 +integer, parameter :: adios2_type_real8 = 3 +integer, parameter :: adios2_type_double_precision = 3 +integer, parameter :: adios2_type_complex = 4 +integer, parameter :: adios2_type_complex8 = 5 + +integer, parameter :: adios2_type_integer1 = 6 +integer, parameter :: adios2_type_integer2 = 7 +integer, parameter :: adios2_type_integer4 = 8 +integer, parameter :: adios2_type_integer8 = 9 + +! Open Mode +integer, parameter :: adios2_open_mode_undefined = 0 +integer, parameter :: adios2_open_mode_write = 1 +integer, parameter :: adios2_open_mode_read = 2 +integer, parameter :: adios2_open_mode_append = 3 +integer, parameter :: adios2_open_mode_read_write = 4