/[MITgcm]/MITgcm_contrib/nesting_sannino/nest_child/nest_eeinit.F
ViewVC logotype

Annotation of /MITgcm_contrib/nesting_sannino/nest_child/nest_eeinit.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (hide annotations) (download)
Sun Nov 28 00:50:11 2010 UTC (14 years, 8 months ago) by jmc
Branch: MAIN
CVS Tags: HEAD
code taken out of eeboot_minimal.F and put into this Nesting Initialistion
 S/R: nest_child version ; fix bug (call MPI_COMM_SIZE instead of
 MPI_COMM_RANK) to get the size of world group of procs.

1 jmc 1.1 C $Header: /u/gcmpack/MITgcm/eesupp/src/eeboot_minimal.F,v 1.18 2009/11/24 00:16:33 jmc Exp $
2     C $Name: $
3    
4     #include "NEST_CHILD_OPTIONS.h"
5    
6     CBOP
7     C !ROUTINE: NEST_EEINIT
8    
9     C !INTERFACE:
10     SUBROUTINE NEST_EEINIT(
11     I mpiMyWid,
12     O color )
13    
14     C !DESCRIPTION:
15     C *==========================================================*
16     C | SUBROUTINE NEST\_EEINIT
17     C | o Set Nesting Execution Environment
18     C *==========================================================*
19     C | This is the NEST_CHILD version
20     C *==========================================================*
21    
22     C !USES:
23     IMPLICIT NONE
24     C == Global data ==
25     #include "SIZE.h"
26     #include "EEPARAMS.h"
27     #include "EESUPPORT.h"
28     #include "NEST_CHILD_PARAMS.h"
29    
30     C !INPUT PARAMETERS:
31     C mpiMyWid :: my World MPI rank
32     INTEGER mpiMyWid
33    
34     C !OUTPUT PARAMETERS:
35     C color :: type of group I belong to
36     INTEGER color
37    
38     #ifdef ALLOW_USE_MPI
39     C !LOCAL VARIABLES:
40     C mpiRC :: Error code reporting variable used with MPI.
41     C msgBuf :: Used to build messages for printing.
42     c CHARACTER*(MAX_LEN_MBUF) msgBuf
43     INTEGER mpiRC
44     INTEGER size, npd
45     INTEGER Count_Lev
46     CEOP
47    
48     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
49    
50     CALL MPI_COMM_SIZE( MPI_COMM_WORLD, size, mpiRC )
51     npd=size-(NCPUs_PAR_C+NCPUs_CLD_C(1))
52    
53     MSTR_DRV_C(1) = 0
54     MSTR_PAR_C(1) = npd
55     MSTR_CLD_C(1) = NCPUs_PAR_C + npd
56    
57     DO Count_Lev = 2, NST_LEV_TOT_C
58     MSTR_DRV_C(Count_Lev) = MSTR_CLD_C(Count_Lev-1)
59     & + NCPUs_CLD_C(Count_Lev-1)
60     MSTR_CLD_C(Count_Lev) = MSTR_DRV_C(Count_Lev) + 1
61     MSTR_PAR_C(Count_Lev) = MSTR_CLD_C(Count_Lev-1)
62     ENDDO
63    
64     IF (NST_LEV_C.EQ.1) THEN
65     IF (mpiMyWId.GE.MSTR_PAR_C(1).AND.mpiMyWId.LT.MSTR_CLD_C(1))
66     & color = 1
67     IF (mpiMyWId.GE.MSTR_CLD_C(1))
68     & color = 2
69     ENDIF
70    
71     IF (NST_LEV_C.GT.1) THEN
72     IF (mpiMyWId.GE.MSTR_CLD_C(NST_LEV_C).AND.
73     & mpiMyWId.LT.MSTR_CLD_C(NST_LEV_C)+NCPUs_CLD_C(NST_LEV_C))
74     & color = (NST_LEV_C + 1)
75     ENDIF
76    
77     C-- split per group of same color ?
78     CALL MPI_COMM_SPLIT ( MPI_COMM_WORLD, color, 0,
79     & MPI_COMM_MODEL, mpiRC )
80     IF ( mpiRC .NE. MPI_SUCCESS ) THEN
81     write(*,*) 'error SPLIT'
82     ENDIF
83    
84     #else /* ALLOW_USE_MPI */
85     STOP 'ABNORMAL END: S/R NEST_EEINIT: Needs to Use MPI'
86     #endif /* ALLOW_USE_MPI */
87    
88     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
89    
90     RETURN
91     END

  ViewVC Help
Powered by ViewVC 1.1.22