xref: /petsc/src/vec/is/tests/ex6.c (revision 5f80ce2ab25dff0f4601e710601cbbcecf323266)
13c429eb5SStefano Zampini static char help[] = "Tests ISRenumber.\n\n";
23c429eb5SStefano Zampini 
33c429eb5SStefano Zampini #include <petscis.h>
43c429eb5SStefano Zampini 
53c429eb5SStefano Zampini PetscErrorCode TestRenumber(IS is, IS mult)
63c429eb5SStefano Zampini {
73c429eb5SStefano Zampini   IS       nis;
83c429eb5SStefano Zampini   PetscInt N;
93c429eb5SStefano Zampini 
103c429eb5SStefano Zampini   PetscFunctionBegin;
11*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscPrintf(PetscObjectComm((PetscObject)is),"\n-----------------\n"));
12*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscPrintf(PetscObjectComm((PetscObject)is),"\nInitial\n"));
13*5f80ce2aSJacob Faibussowitsch   CHKERRQ(ISView(is,NULL));
143c429eb5SStefano Zampini   if (mult) {
15*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscPrintf(PetscObjectComm((PetscObject)is),"\nMult\n"));
16*5f80ce2aSJacob Faibussowitsch     CHKERRQ(ISView(mult,NULL));
173c429eb5SStefano Zampini   }
18*5f80ce2aSJacob Faibussowitsch   CHKERRQ(ISRenumber(is,mult,&N,NULL));
19*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscPrintf(PetscObjectComm((PetscObject)is),"\nRenumbered, unique entries %" PetscInt_FMT "\n",N));
20*5f80ce2aSJacob Faibussowitsch   CHKERRQ(ISRenumber(is,mult,NULL,&nis));
21*5f80ce2aSJacob Faibussowitsch   CHKERRQ(ISView(nis,NULL));
22*5f80ce2aSJacob Faibussowitsch   CHKERRQ(ISDestroy(&nis));
233c429eb5SStefano Zampini   PetscFunctionReturn(0);
243c429eb5SStefano Zampini }
253c429eb5SStefano Zampini 
263c429eb5SStefano Zampini int main(int argc, char **argv)
273c429eb5SStefano Zampini {
283c429eb5SStefano Zampini   IS              is;
293c429eb5SStefano Zampini   PetscErrorCode  ierr;
303c429eb5SStefano Zampini   PetscMPIInt     size, rank;
313c429eb5SStefano Zampini 
323c429eb5SStefano Zampini   ierr = PetscInitialize(&argc, &argv, NULL, help); if (ierr) return ierr;
33*5f80ce2aSJacob Faibussowitsch   CHKERRMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size));
34*5f80ce2aSJacob Faibussowitsch   CHKERRMPI(MPI_Comm_rank(PETSC_COMM_WORLD,&rank));
353c429eb5SStefano Zampini 
363c429eb5SStefano Zampini   for (PetscInt c = 0; c < 3; c++) {
373c429eb5SStefano Zampini     IS mult = NULL;
383c429eb5SStefano Zampini 
39*5f80ce2aSJacob Faibussowitsch     CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,0,0,0,&is));
403c429eb5SStefano Zampini     if (c) {
413c429eb5SStefano Zampini       PetscInt n;
42*5f80ce2aSJacob Faibussowitsch       CHKERRQ(ISGetLocalSize(is,&n));
43*5f80ce2aSJacob Faibussowitsch       CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult));
443c429eb5SStefano Zampini     }
45*5f80ce2aSJacob Faibussowitsch     CHKERRQ(TestRenumber(is,mult));
46*5f80ce2aSJacob Faibussowitsch     CHKERRQ(ISDestroy(&is));
47*5f80ce2aSJacob Faibussowitsch     CHKERRQ(ISDestroy(&mult));
483c429eb5SStefano Zampini 
49*5f80ce2aSJacob Faibussowitsch     CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,2,-rank-1,-4,&is));
503c429eb5SStefano Zampini     if (c) {
513c429eb5SStefano Zampini       PetscInt n;
52*5f80ce2aSJacob Faibussowitsch       CHKERRQ(ISGetLocalSize(is,&n));
53*5f80ce2aSJacob Faibussowitsch       CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult));
543c429eb5SStefano Zampini     }
55*5f80ce2aSJacob Faibussowitsch     CHKERRQ(TestRenumber(is,mult));
56*5f80ce2aSJacob Faibussowitsch     CHKERRQ(ISDestroy(&is));
57*5f80ce2aSJacob Faibussowitsch     CHKERRQ(ISDestroy(&mult));
583c429eb5SStefano Zampini 
59*5f80ce2aSJacob Faibussowitsch     CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,10,4+rank,2,&is));
603c429eb5SStefano Zampini     if (c) {
613c429eb5SStefano Zampini       PetscInt n;
62*5f80ce2aSJacob Faibussowitsch       CHKERRQ(ISGetLocalSize(is,&n));
63*5f80ce2aSJacob Faibussowitsch       CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult));
643c429eb5SStefano Zampini     }
65*5f80ce2aSJacob Faibussowitsch     CHKERRQ(TestRenumber(is,mult));
66*5f80ce2aSJacob Faibussowitsch     CHKERRQ(ISDestroy(&is));
67*5f80ce2aSJacob Faibussowitsch     CHKERRQ(ISDestroy(&mult));
683c429eb5SStefano Zampini 
69*5f80ce2aSJacob Faibussowitsch     CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,10,-rank-1,2,&is));
703c429eb5SStefano Zampini     if (c) {
713c429eb5SStefano Zampini       PetscInt n;
72*5f80ce2aSJacob Faibussowitsch       CHKERRQ(ISGetLocalSize(is,&n));
73*5f80ce2aSJacob Faibussowitsch       CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult));
743c429eb5SStefano Zampini     }
75*5f80ce2aSJacob Faibussowitsch     CHKERRQ(TestRenumber(is,mult));
76*5f80ce2aSJacob Faibussowitsch     CHKERRQ(ISDestroy(&is));
77*5f80ce2aSJacob Faibussowitsch     CHKERRQ(ISDestroy(&mult));
783c429eb5SStefano Zampini   }
793c429eb5SStefano Zampini   /* Finalize */
803c429eb5SStefano Zampini   ierr = PetscFinalize();
813c429eb5SStefano Zampini   return ierr;
823c429eb5SStefano Zampini }
833c429eb5SStefano Zampini 
843c429eb5SStefano Zampini /*TEST
853c429eb5SStefano Zampini 
863c429eb5SStefano Zampini   test:
873c429eb5SStefano Zampini     suffix: 1
883c429eb5SStefano Zampini     nsize: {{1 2}separate output}
893c429eb5SStefano Zampini 
903c429eb5SStefano Zampini TEST*/
91