MODULE mpipara INTEGER,SAVE :: mpi_rank INTEGER,SAVE :: mpi_size INTEGER,SAVE :: comm_icosa INTEGER,SAVE :: ierr LOGICAL,SAVE :: using_mpi LOGICAL,SAVE :: is_mpi_root CONTAINS SUBROUTINE init_mpipara USE mpi_mod IMPLICIT NONE using_mpi=.FALSE. #ifdef CPP_USING_MPI using_mpi=.TRUE. #endif IF (using_mpi) THEN CALL MPI_INIT(ierr) comm_icosa=MPI_COMM_WORLD CALL MPI_COMM_SIZE(comm_icosa,mpi_size,ierr) CALL MPI_COMM_RANK(comm_icosa,mpi_rank,ierr) ELSE comm_icosa=-1 mpi_size=1 mpi_rank=0 ENDIF IF (mpi_rank==0) THEN is_mpi_root=.TRUE. ELSE is_mpi_root=.FALSE. ENDIF END SUBROUTINE init_mpipara SUBROUTINE finalize_mpipara USE mpi_mod IMPLICIT NONE IF (using_mpi) CALL MPI_FINALIZE(ierr) END SUBROUTINE finalize_mpipara END MODULE mpipara