/[MITgcm]/MITgcm/eesupp/src/ini_jam.F
ViewVC logotype

Contents of /MITgcm/eesupp/src/ini_jam.F

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


Revision 1.7 - (show annotations) (download)
Fri Mar 5 19:16:56 2010 UTC (14 years, 2 months ago) by jmc
Branch: MAIN
CVS Tags: HEAD
Changes since 1.6: +1 -1 lines
FILE REMOVED
remove JAM communication code (obsolete)

1 C $Header: /u/gcmpack/MITgcm/eesupp/src/ini_jam.F,v 1.6 2004/03/27 03:51:51 edhill Exp $
2 C $Name: $
3
4 #include "CPP_EEOPTIONS.h"
5
6 #define USE_JAM_INIT
7
8 CBOP
9
10 C !ROUTINE: INI_JAM
11
12 C !INTERFACE:
13 SUBROUTINE INI_JAM
14 IMPLICIT NONE
15
16 C !DESCRIPTION:
17 C *=================================================================================*
18 C | SUBROUTINE INI\_JAM
19 C | o Initialise JAM based communication
20 C *=================================================================================*
21 C | Connect to synchronising daemon process that allocates jam network ids to
22 C | each process and initialises network once all processes are connected.
23 C *=================================================================================*
24
25
26 C !USES:
27 C == Global data ==
28 #ifdef LETS_MAKE_JAM
29 #include "SIZE.h"
30 #include "EEPARAMS.h"
31 #include "EESUPPORT.h"
32 #include "JAM_INFO.h"
33 #include "MPI_INFO.h"
34 #ifdef ALLOW_MPI
35 #include "mpif.h"
36 #endif
37
38 C !LOCAL VARIABLES:
39 C == Local variables ==
40 C dummyVal :: Variable which is used in sync. call
41 C rc :: Return code
42 C myTwoProcRank :: Temp. for holding ranking within processor pairs.
43 Real*8 dummyVal
44 INTEGER rc
45 #ifdef JAM_WITH_TWO_PROCS_PER_NODE
46 INTEGER myTwoProcRank
47 #endif
48 CEOP
49
50 C Names used in JAM exch testing for MPI based exchange
51 mpi_northId = mpiPidN
52 mpi_southId = mpiPidS
53
54 #ifdef USE_JAM_INIT
55 C JAM initialisation. This should work with or without
56 C MPI. If we dont use MPI we have to start procs. by hand
57 C though!
58 #ifndef JAM_WITH_TWO_PROCS_PER_NODE
59 CALL JAM_collective_init
60 #else /* ! JAM_WITH_TWO_PROCS_PER_NODE */
61 myTwoProcRank = MOD(myProcId,2)
62 IF ( myTwoProcRank .EQ. 0 ) THEN
63 myTwoProcRank = 1
64 ELSE
65 myTwoProcRank = 0
66 ENDIF
67 CALL JAM_collective_init( myTwoProcRank )
68 #endif /* JAM_WITH_TWO_PROCS_PER_NODE */
69
70 CALL GET_JAM_self_address( jam_pid )
71 CALL GET_JAM_partition_size( jam_np )
72 jam_exchKey = 100
73 dummyVal = 0.
74 CALL JAM_barrier_start( dummyVal )
75 CALL JAM_barrier_done( dummyVal )
76
77 C Set up connectivity
78 jam_northId = jam_pid+1
79 IF ( jam_northId .EQ. jam_np ) jam_northId = 0
80 jam_southId = jam_pid-1
81 IF ( jam_southId .LT. 0 ) jam_southId = jam_np-1
82
83 numberOfProcs = jam_np
84 myProcId = jam_pid
85
86 #ifdef JAM_WITH_TWO_PROCS_PER_NODE
87 C The following fixes the instance where MPI and
88 C James JAM arrive at a different id for this process
89 C *note* this assumes nPx=1 (no parallization in X)
90 myPid = jam_pid
91 pidN = mod(jam_pid+1,jam_np)
92 pidS = mod(jam_pid-1+jam_np,jam_np)
93 pidW = jam_pid
94 pidE = jam_pid
95 myYGlobalLo = sNy*nSy*jam_pid+1
96 myXGlobalLo = 1
97 #endif
98
99 #endif
100 #endif /* LETS_MAKE_JAM */
101
102 RETURN
103 END

  ViewVC Help
Powered by ViewVC 1.1.22