1 #include <mpi.h>
2
Ccommcheck(int F77World,int f77comm)3 int Ccommcheck(int F77World, int f77comm)
4 {
5 int Np, Iam, i, OK=1;
6
7 if (sizeof(int) != sizeof(MPI_Comm)) OK=0;
8 else if ((MPI_Comm) F77World != MPI_COMM_WORLD) OK=0;
9 else
10 {
11 MPI_Comm_rank(MPI_COMM_WORLD, &Iam);
12 if (Iam > 1) OK = ((MPI_Comm) f77comm == MPI_COMM_NULL);
13 else
14 {
15 i = MPI_Comm_size((MPI_Comm) f77comm, &Np);
16 if (i != MPI_SUCCESS) OK = 0;
17 else if (Np != 2) OK = 0;
18 }
19 }
20 MPI_Allreduce(&OK, &i, 1, MPI_INT, MPI_MIN, MPI_COMM_WORLD);
21 return(i);
22 }
23
24 /*
25 * Fortran interfaces
26 */
CCOMMCHECK(int * F77World,int * f77comm)27 int CCOMMCHECK(int *F77World, int *f77comm)
28 {
29 return(Ccommcheck(*F77World, *f77comm));
30 }
ccommcheck_(int * F77World,int * f77comm)31 int ccommcheck_(int *F77World, int *f77comm)
32 {
33 return(Ccommcheck(*F77World, *f77comm));
34 }
ccommcheck(int * F77World,int * f77comm)35 int ccommcheck(int *F77World, int *f77comm)
36 {
37 return(Ccommcheck(*F77World, *f77comm));
38 }
39