1 2 static char help[] = "Tests PetscGlobalMinMax\n\n"; 3 4 #include <petscsys.h> 5 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.}; 11 12 PetscCall(PetscInitialize(&argc,&argv,(char*)0,help)); 13 PetscCallMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size)); 14 PetscCallMPI(MPI_Comm_rank(PETSC_COMM_WORLD,&rank)); 15 16 li[0] = 4 + rank; 17 li[1] = -3 + size - rank; 18 PetscCall(PetscGlobalMinMaxInt(PETSC_COMM_WORLD,li,gi)); 19 if (gi[0] != 4 || gi[1] != -3+size) PetscCall(PetscPrintf(PETSC_COMM_SELF,"1) Error MIN/MAX %" PetscInt_FMT " %" PetscInt_FMT "\n",gi[0],gi[1])); 20 PetscCall(PetscGlobalMinMaxInt(PETSC_COMM_WORLD,li,li)); 21 if (li[0] != gi[0] || li[1] != gi[1]) PetscCall(PetscPrintf(PETSC_COMM_SELF,"2) Error MIN/MAX %" PetscInt_FMT " %" PetscInt_FMT "\n",li[0],li[1])); 22 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 } 30 31 PetscCall(PetscGlobalMinMaxInt(PETSC_COMM_WORLD,li,gi)); 32 if (gi[0] > li[0] || gi[1] < li[1]) PetscCall(PetscPrintf(PETSC_COMM_SELF,"3) Error MIN/MAX %" PetscInt_FMT " %" PetscInt_FMT "\n",gi[0],gi[1])); 33 34 lr[0] = 4.0 + rank; 35 lr[1] = -3.0 + size - rank; 36 PetscCall(PetscGlobalMinMaxReal(PETSC_COMM_WORLD,lr,gr)); 37 if (gr[0] != 4.0 || gr[1] != -3.0+size) PetscCall(PetscPrintf(PETSC_COMM_SELF,"4) Error MIN/MAX %g %g\n",(double)gr[0],(double)gr[1])); 38 PetscCall(PetscGlobalMinMaxReal(PETSC_COMM_WORLD,lr,lr)); 39 if (lr[0] != gr[0] || lr[1] != gr[1]) PetscCall(PetscPrintf(PETSC_COMM_SELF,"5) Error MIN/MAX %g %g\n",(double)lr[0],(double)li[1])); 40 41 PetscCall(PetscFinalize()); 42 return 0; 43 } 44 45 /*TEST 46 47 test: 48 output_file: output/ex58_1.out 49 50 test: 51 suffix: 2 52 output_file: output/ex58_1.out 53 nsize: 2 54 55 TEST*/ 56