1 |
C $Header$ |
C $Header$ |
2 |
|
C $Name$ |
3 |
|
|
4 |
#include "CPP_EEOPTIONS.h" |
#include "CPP_EEOPTIONS.h" |
5 |
|
|
6 |
#define USE_JAM_INIT |
#define USE_JAM_INIT |
7 |
|
|
8 |
SUBROUTINE INI_JAM |
CBOP |
9 |
|
|
10 |
|
C !ROUTINE: INI_JAM |
11 |
|
|
12 |
C Initialise JAM based communication |
C !INTERFACE: |
13 |
|
SUBROUTINE INI_JAM |
14 |
IMPLICIT NONE |
IMPLICIT NONE |
15 |
|
|
16 |
#ifdef LETS_MAKE_JAM |
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 == |
C == Global data == |
28 |
|
#ifdef LETS_MAKE_JAM |
29 |
#include "SIZE.h" |
#include "SIZE.h" |
30 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
31 |
#include "EESUPPORT.h" |
#include "EESUPPORT.h" |
|
|
|
32 |
#include "JAM_INFO.h" |
#include "JAM_INFO.h" |
33 |
#include "MPI_INFO.h" |
#include "MPI_INFO.h" |
|
|
|
34 |
#ifdef ALLOW_MPI |
#ifdef ALLOW_MPI |
35 |
#include "mpif.h" |
#include "mpif.h" |
36 |
#endif |
#endif |
37 |
|
|
38 |
|
C !LOCAL VARIABLES: |
39 |
C == Local variables == |
C == Local variables == |
40 |
REAL*8 dummyVal |
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 |
INTEGER rc |
|
CHARACTER*(MAX_LEN_FNAM) fnam |
|
45 |
#ifdef JAM_WITH_TWO_PROCS_PER_NODE |
#ifdef JAM_WITH_TWO_PROCS_PER_NODE |
46 |
INTEGER myTwoProcRank |
INTEGER myTwoProcRank |
47 |
#endif |
#endif |
48 |
|
CEOP |
49 |
|
|
50 |
C Names used in JAM exch testing for MPI based exchange |
C Names used in JAM exch testing for MPI based exchange |
51 |
mpi_northId = mpiPidN |
mpi_northId = mpiPidN |
83 |
numberOfProcs = jam_np |
numberOfProcs = jam_np |
84 |
myProcId = jam_pid |
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 |
#endif |
100 |
#endif /* LETS_MAKE_JAM */ |
#endif /* LETS_MAKE_JAM */ |
101 |
|
|