xref: /petsc/src/sys/tests/ex58.c (revision b122ec5aa1bd4469eb4e0673542fb7de3f411254)
158b5cd2aSSatish Balay 
258b5cd2aSSatish Balay static char help[] = "Tests PetscGlobalMinMax\n\n";
358b5cd2aSSatish Balay 
458b5cd2aSSatish Balay #include <petscsys.h>
558b5cd2aSSatish Balay 
658b5cd2aSSatish Balay int main(int argc,char **argv)
758b5cd2aSSatish Balay {
858b5cd2aSSatish Balay   PetscMPIInt    size,rank;
958b5cd2aSSatish Balay   PetscInt       li[2],gi[2] = {-1, -1};
1058b5cd2aSSatish Balay   PetscReal      lr[2],gr[2] = {-1., -1.};
1158b5cd2aSSatish Balay 
12*b122ec5aSJacob Faibussowitsch   CHKERRQ(PetscInitialize(&argc,&argv,(char*)0,help));
135f80ce2aSJacob Faibussowitsch   CHKERRMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size));
145f80ce2aSJacob Faibussowitsch   CHKERRMPI(MPI_Comm_rank(PETSC_COMM_WORLD,&rank));
1558b5cd2aSSatish Balay 
1658b5cd2aSSatish Balay   li[0] = 4 + rank;
1758b5cd2aSSatish Balay   li[1] = -3 + size - rank;
185f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscGlobalMinMaxInt(PETSC_COMM_WORLD,li,gi));
195f80ce2aSJacob Faibussowitsch   if (gi[0] != 4 || gi[1] != -3+size) CHKERRQ(PetscPrintf(PETSC_COMM_SELF,"1) Error MIN/MAX %" PetscInt_FMT " %" PetscInt_FMT "\n",gi[0],gi[1]));
205f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscGlobalMinMaxInt(PETSC_COMM_WORLD,li,li));
215f80ce2aSJacob Faibussowitsch   if (li[0] != gi[0] || li[1] != gi[1]) CHKERRQ(PetscPrintf(PETSC_COMM_SELF,"2) Error MIN/MAX %" PetscInt_FMT " %" PetscInt_FMT "\n",li[0],li[1]));
2258b5cd2aSSatish Balay 
2358b5cd2aSSatish Balay   if (rank == 0) {
2458b5cd2aSSatish Balay     li[0] = PETSC_MAX_INT;
2558b5cd2aSSatish Balay     li[1] = PETSC_MIN_INT;
2658b5cd2aSSatish Balay   } else if (rank == 1) {
2758b5cd2aSSatish Balay     li[0] = PETSC_MIN_INT;
2858b5cd2aSSatish Balay     li[1] = PETSC_MAX_INT;
2958b5cd2aSSatish Balay   }
3058b5cd2aSSatish Balay 
315f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscGlobalMinMaxInt(PETSC_COMM_WORLD,li,gi));
325f80ce2aSJacob Faibussowitsch   if (gi[0] > li[0] || gi[1] < li[1]) CHKERRQ(PetscPrintf(PETSC_COMM_SELF,"3) Error MIN/MAX %" PetscInt_FMT " %" PetscInt_FMT "\n",gi[0],gi[1]));
3358b5cd2aSSatish Balay 
3458b5cd2aSSatish Balay   lr[0] = 4.0 + rank;
3558b5cd2aSSatish Balay   lr[1] = -3.0 + size - rank;
365f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscGlobalMinMaxReal(PETSC_COMM_WORLD,lr,gr));
375f80ce2aSJacob Faibussowitsch   if (gr[0] != 4.0 || gr[1] != -3.0+size) CHKERRQ(PetscPrintf(PETSC_COMM_SELF,"4) Error MIN/MAX %g %g\n",(double)gr[0],(double)gr[1]));
385f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscGlobalMinMaxReal(PETSC_COMM_WORLD,lr,lr));
395f80ce2aSJacob Faibussowitsch   if (lr[0] != gr[0] || lr[1] != gr[1]) CHKERRQ(PetscPrintf(PETSC_COMM_SELF,"5) Error MIN/MAX %g %g\n",(double)lr[0],(double)li[1]));
4058b5cd2aSSatish Balay 
41*b122ec5aSJacob Faibussowitsch   CHKERRQ(PetscFinalize());
42*b122ec5aSJacob Faibussowitsch   return 0;
4358b5cd2aSSatish Balay }
4458b5cd2aSSatish Balay 
4558b5cd2aSSatish Balay /*TEST
4658b5cd2aSSatish Balay 
4758b5cd2aSSatish Balay    test:
4858b5cd2aSSatish Balay      output_file: output/ex58_1.out
4958b5cd2aSSatish Balay 
5058b5cd2aSSatish Balay    test:
5158b5cd2aSSatish Balay      suffix: 2
5258b5cd2aSSatish Balay      output_file: output/ex58_1.out
5358b5cd2aSSatish Balay      nsize: 2
5458b5cd2aSSatish Balay 
5558b5cd2aSSatish Balay TEST*/
56