Actual source code: ex58.c
2: static char help[] = "Tests PetscGlobalMinMax\n\n";
4: #include <petscsys.h>
6: int main(int argc,char **argv)
7: {
8: PetscMPIInt size,rank;
9: PetscInt li[2],gi[2] = {-1, -1};
10: PetscReal lr[2],gr[2] = {-1., -1.};
12: PetscInitialize(&argc,&argv,(char*)0,help);
13: MPI_Comm_size(PETSC_COMM_WORLD,&size);
14: MPI_Comm_rank(PETSC_COMM_WORLD,&rank);
16: li[0] = 4 + rank;
17: li[1] = -3 + size - rank;
18: PetscGlobalMinMaxInt(PETSC_COMM_WORLD,li,gi);
19: if (gi[0] != 4 || gi[1] != -3+size) PetscPrintf(PETSC_COMM_SELF,"1) Error MIN/MAX %" PetscInt_FMT " %" PetscInt_FMT "\n",gi[0],gi[1]);
20: PetscGlobalMinMaxInt(PETSC_COMM_WORLD,li,li);
21: if (li[0] != gi[0] || li[1] != gi[1]) PetscPrintf(PETSC_COMM_SELF,"2) Error MIN/MAX %" PetscInt_FMT " %" PetscInt_FMT "\n",li[0],li[1]);
23: if (rank == 0) {
24: li[0] = PETSC_MAX_INT;
25: li[1] = PETSC_MIN_INT;
26: } else if (rank == 1) {
27: li[0] = PETSC_MIN_INT;
28: li[1] = PETSC_MAX_INT;
29: }
31: PetscGlobalMinMaxInt(PETSC_COMM_WORLD,li,gi);
32: if (gi[0] > li[0] || gi[1] < li[1]) PetscPrintf(PETSC_COMM_SELF,"3) Error MIN/MAX %" PetscInt_FMT " %" PetscInt_FMT "\n",gi[0],gi[1]);
34: lr[0] = 4.0 + rank;
35: lr[1] = -3.0 + size - rank;
36: PetscGlobalMinMaxReal(PETSC_COMM_WORLD,lr,gr);
37: if (gr[0] != 4.0 || gr[1] != -3.0+size) PetscPrintf(PETSC_COMM_SELF,"4) Error MIN/MAX %g %g\n",(double)gr[0],(double)gr[1]);
38: PetscGlobalMinMaxReal(PETSC_COMM_WORLD,lr,lr);
39: if (lr[0] != gr[0] || lr[1] != gr[1]) PetscPrintf(PETSC_COMM_SELF,"5) Error MIN/MAX %g %g\n",(double)lr[0],(double)li[1]);
41: PetscFinalize();
42: return 0;
43: }
45: /*TEST
47: test:
48: output_file: output/ex58_1.out
50: test:
51: suffix: 2
52: output_file: output/ex58_1.out
53: nsize: 2
55: TEST*/