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

Annotation of /MITgcm_contrib/nesting_sannino/nest_parent/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:45:42 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_parent version.

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_PARENT_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_PARENT 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_PARENT_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_P+NCPUs_CLD_P(1))
52    
53     MSTR_DRV_P(1) = 0
54     MSTR_PAR_P(1) = npd
55     MSTR_CLD_P(1) = NCPUs_PAR_P + npd
56    
57     DO Count_Lev = 2, NST_LEV_TOT_P
58     MSTR_DRV_P(Count_Lev) = MSTR_PAR_P(Count_Lev-1)
59     & + NCPUs_CLD_P(Count_Lev-1)
60     MSTR_CLD_P(Count_Lev) = MSTR_DRV_P(Count_Lev) + 1
61     MSTR_PAR_P(Count_Lev) = MSTR_CLD_P(Count_Lev-1)
62     ENDDO
63    
64     color=9999999
65     IF (NST_LEV_P.EQ.1) THEN
66     IF (mpiMyWId.GE.MSTR_PAR_P(1).AND.
67     & mpiMyWId.LT.MSTR_CLD_P(1)) color = 1
68     IF (mpiMyWId.GE.MSTR_CLD_P(1)) color = 2
69     ENDIF
70    
71     IF (NST_LEV_P.GT.1) THEN
72     IF (mpiMyWId.GE.MSTR_CLD_P(NST_LEV_P).AND.
73     & mpiMyWId.LT.MSTR_CLD_P(NST_LEV_P)+NCPUs_CLD_P(NST_LEV_P))
74     & color = (NST_LEV_P + 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