source: codes/icosagcm/trunk/src/mpipara.F90 @ 78

Last change on this file since 78 was 26, checked in by ymipsl, 12 years ago

Implementation of parallelism
implementation of iterative laplacian for dissipation

File size: 901 bytes
Line 
1MODULE mpipara
2
3  INTEGER,SAVE :: mpi_rank
4  INTEGER,SAVE :: mpi_size
5 
6  INTEGER,SAVE :: comm_icosa
7  INTEGER,SAVE :: ierr
8  LOGICAL,SAVE :: using_mpi
9  LOGICAL,SAVE :: is_mpi_root
10
11CONTAINS
12
13  SUBROUTINE init_mpipara
14  USE mpi_mod
15  IMPLICIT NONE
16
17    using_mpi=.FALSE.
18#ifdef CPP_USING_MPI
19    using_mpi=.TRUE. 
20#endif
21   
22    IF (using_mpi) THEN
23      CALL MPI_INIT(ierr)
24      comm_icosa=MPI_COMM_WORLD
25      CALL MPI_COMM_SIZE(comm_icosa,mpi_size,ierr)
26      CALL MPI_COMM_RANK(comm_icosa,mpi_rank,ierr)
27    ELSE
28      comm_icosa=-1
29      mpi_size=1
30      mpi_rank=0
31    ENDIF
32   
33    IF (mpi_rank==0) THEN
34      is_mpi_root=.TRUE.
35    ELSE
36      is_mpi_root=.FALSE.
37    ENDIF
38   
39  END SUBROUTINE  init_mpipara
40
41  SUBROUTINE finalize_mpipara
42  USE mpi_mod
43  IMPLICIT NONE
44   
45    IF (using_mpi) CALL MPI_FINALIZE(ierr)
46   
47   END SUBROUTINE  finalize_mpipara
48   
49   
50END MODULE mpipara
Note: See TracBrowser for help on using the repository browser.