diff --git a/src/MOD_PARTIT.F90 b/src/MOD_PARTIT.F90 index 6603b8922..2e8330a4b 100644 --- a/src/MOD_PARTIT.F90 +++ b/src/MOD_PARTIT.F90 @@ -5,12 +5,12 @@ module MOD_PARTIT USE, intrinsic :: ISO_FORTRAN_ENV, only : int32 USE MOD_WRITE_BINARY_ARRAYS USE MOD_READ_BINARY_ARRAYS +USE mpi #if defined(_OPENMP) USE OMP_LIB #endif IMPLICIT NONE SAVE -include 'mpif.h' integer, parameter :: MAX_LAENDERECK=16 integer, parameter :: MAX_NEIGHBOR_PARTITIONS=32 @@ -217,4 +217,4 @@ subroutine READ_T_PARTIT(partit, unit, iostat, iomsg) read(unit, iostat=iostat, iomsg=iomsg) partit%pe_status end subroutine READ_T_PARTIT -end module MOD_PARTIT +end module MOD_PARTIT \ No newline at end of file diff --git a/src/cpl_driver.F90 b/src/cpl_driver.F90 index 0c2ad2bc1..9e62800de 100644 --- a/src/cpl_driver.F90 +++ b/src/cpl_driver.F90 @@ -16,6 +16,7 @@ module cpl_driver use g_config, only : dt, use_icebergs, lwiso use o_param, only : rad USE MOD_PARTIT + use mpi implicit none save ! @@ -56,7 +57,7 @@ module cpl_driver integer :: localRank ! local MPI rank integer :: localSize ! local MPI size integer :: localComm ! local MPI size - logical :: commRank ! true for ranks doing OASIS communication + integer :: commRank integer :: comp_id ! id returned by oasis_init_comp logical, save :: oasis_was_initialized @@ -773,11 +774,11 @@ subroutine cpl_oasis3mct_define_unstr(partit, mesh) !------------------------------------------------------------------ call oasis_enddef(ierror) - if (commRank) print *, 'fesom oasis_enddef: COMPLETED' + if (ierror .eq. oasis_ok) print *, 'fesom oasis_enddef: COMPLETED' #ifndef __oifs - if (commRank) print *, 'FESOM: calling exchange_roots' + if (ierror .eq. oasis_ok) print *, 'FESOM: calling exchange_roots' call exchange_roots(source_root, target_root, 1, partit%MPI_COMM_FESOM, MPI_COMM_WORLD) - if (commRank) print *, 'FESOM source/target roots: ', source_root, target_root + if (ierror .eq. oasis_ok) print *, 'FESOM source/target roots: ', source_root, target_root #endif ! WAS VOM FOLGENDEN BRAUCHE ICH NOCH ??? diff --git a/src/fortran_utils.F90 b/src/fortran_utils.F90 index 35efdb742..86a93d226 100644 --- a/src/fortran_utils.F90 +++ b/src/fortran_utils.F90 @@ -1,5 +1,6 @@ ! synopsis: basic Fortran utilities, no MPI, dependencies only to INTRINSIC modules module fortran_utils + use mpi implicit none contains @@ -48,7 +49,6 @@ function mpirank_to_txt(mpicomm) result(txt) integer mype integer npes integer mpierr - include 'mpif.h' call MPI_Comm_Rank(mpicomm, mype, mpierr) call MPI_Comm_Size(mpicomm, npes, mpierr) diff --git a/src/gen_modules_partitioning.F90 b/src/gen_modules_partitioning.F90 index 04ecd94d3..2e701e427 100644 --- a/src/gen_modules_partitioning.F90 +++ b/src/gen_modules_partitioning.F90 @@ -113,7 +113,7 @@ subroutine par_ex(COMM, mype, abort) ! finalizes MPI #ifndef __oasis if (present(abort)) then if (mype==0) write(*,*) 'Run finished unexpectedly!' - call MPI_ABORT(MPI_COMM_WORLD, 1 ) + call MPI_ABORT(MPI_COMM_WORLD, 1, error) else ! TODO: this is where fesom standalone, ifsinterface etc get to !1. there no abort actually even when model calls abort, and barrier may hang @@ -580,4 +580,3 @@ subroutine status_check(partit) call par_ex(partit%MPI_COMM_FESOM, partit%mype, 1) endif end subroutine status_check - diff --git a/src/ifs_interface/mpp_io.F90 b/src/ifs_interface/mpp_io.F90 index 6c57995e3..d7838cd32 100644 --- a/src/ifs_interface/mpp_io.F90 +++ b/src/ifs_interface/mpp_io.F90 @@ -6,6 +6,7 @@ !----------------------------------------------------- MODULE mpp_io + USE mpi #if defined(__MULTIO) USE iom, only : iom_enable_multio, iom_initialize, iom_init_server, iom_finalize #endif @@ -30,7 +31,6 @@ MODULE mpp_io SUBROUTINE mpp_io_init( iicomm, lio, irequired, iprovided, lmpi1 ) - INCLUDE "mpif.h" INTEGER, INTENT(INOUT) :: iicomm LOGICAL, INTENT(INOUT) :: lio INTEGER, INTENT(INOUT) :: irequired, iprovided @@ -126,7 +126,6 @@ SUBROUTINE mpp_io_init_2( iicomm ) INTEGER :: icode, ierr, icolor, iicommx, iicommm, iicommo INTEGER :: ji,inum LOGICAL :: lcompp - INCLUDE "mpif.h" ! Construct multio server communicator diff --git a/src/io_restart.F90 b/src/io_restart.F90 index 9077e27af..fd1121278 100644 --- a/src/io_restart.F90 +++ b/src/io_restart.F90 @@ -12,6 +12,7 @@ MODULE io_RESTART use MOD_PARTIT use MOD_PARSUP use fortran_utils + use mpi #if defined(__recom) use recom_glovar use recom_config @@ -771,7 +772,6 @@ subroutine read_all_raw_restarts(mpicomm, mype) integer fileunit integer status integer mpierr - include 'mpif.h' if(mype == RAW_RESTART_METADATA_RANK) then ! read metadata info for the raw restart @@ -860,7 +860,6 @@ subroutine finalize_restart() ! !_______________________________________________________________________________ subroutine read_restart(path, filegroup, mpicomm, mype) - include 'mpif.h' character(len=*), intent(in) :: path type(restart_file_group), intent(inout) :: filegroup integer, intent(in) :: mpicomm @@ -1004,7 +1003,6 @@ function is_due(unit, frequency, istep) result(d) ! integer mype ! integer npes ! integer mpierr -! include 'mpif.h' ! ! call MPI_Comm_Rank(mpicomm, mype, mpierr) ! call MPI_Comm_Size(mpicomm, npes, mpierr) @@ -1012,4 +1010,4 @@ function is_due(unit, frequency, istep) result(d) ! end function !!PS --> move this function also to fortran_utils.F90 -end module +end module \ No newline at end of file diff --git a/src/temp/MOD_PARTIT.F90 b/src/temp/MOD_PARTIT.F90 index bd3b7dec2..818b46541 100644 --- a/src/temp/MOD_PARTIT.F90 +++ b/src/temp/MOD_PARTIT.F90 @@ -5,9 +5,9 @@ module MOD_PARTIT USE, intrinsic :: ISO_FORTRAN_ENV USE MOD_WRITE_BINARY_ARRAYS USE MOD_READ_BINARY_ARRAYS +USE mpi IMPLICIT NONE SAVE -include 'mpif.h' integer, parameter :: MAX_LAENDERECK=16 integer, parameter :: MAX_NEIGHBOR_PARTITIONS=32 @@ -186,4 +186,4 @@ subroutine READ_T_PARTIT(partit, unit, iostat, iomsg) read(unit, iostat=iostat, iomsg=iomsg) partit%pe_status end subroutine READ_T_PARTIT -end module MOD_PARTIT +end module MOD_PARTIT \ No newline at end of file