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