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

Contents 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 - (show annotations) (download)
Sun Nov 28 00:50:11 2010 UTC (14 years, 8 months ago) by jmc
Branch: MAIN
CVS Tags: HEAD
Error occurred while calculating annotation data.
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 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