xref: /petsc/src/vec/is/tests/ex6.c (revision b122ec5aa1bd4469eb4e0673542fb7de3f411254)
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;
115f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscPrintf(PetscObjectComm((PetscObject)is),"\n-----------------\n"));
125f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscPrintf(PetscObjectComm((PetscObject)is),"\nInitial\n"));
135f80ce2aSJacob Faibussowitsch   CHKERRQ(ISView(is,NULL));
143c429eb5SStefano Zampini   if (mult) {
155f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscPrintf(PetscObjectComm((PetscObject)is),"\nMult\n"));
165f80ce2aSJacob Faibussowitsch     CHKERRQ(ISView(mult,NULL));
173c429eb5SStefano Zampini   }
185f80ce2aSJacob Faibussowitsch   CHKERRQ(ISRenumber(is,mult,&N,NULL));
195f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscPrintf(PetscObjectComm((PetscObject)is),"\nRenumbered, unique entries %" PetscInt_FMT "\n",N));
205f80ce2aSJacob Faibussowitsch   CHKERRQ(ISRenumber(is,mult,NULL,&nis));
215f80ce2aSJacob Faibussowitsch   CHKERRQ(ISView(nis,NULL));
225f80ce2aSJacob 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   PetscMPIInt     size, rank;
303c429eb5SStefano Zampini 
31*b122ec5aSJacob Faibussowitsch   CHKERRQ(PetscInitialize(&argc, &argv, NULL, help));
325f80ce2aSJacob Faibussowitsch   CHKERRMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size));
335f80ce2aSJacob Faibussowitsch   CHKERRMPI(MPI_Comm_rank(PETSC_COMM_WORLD,&rank));
343c429eb5SStefano Zampini 
353c429eb5SStefano Zampini   for (PetscInt c = 0; c < 3; c++) {
363c429eb5SStefano Zampini     IS mult = NULL;
373c429eb5SStefano Zampini 
385f80ce2aSJacob Faibussowitsch     CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,0,0,0,&is));
393c429eb5SStefano Zampini     if (c) {
403c429eb5SStefano Zampini       PetscInt n;
415f80ce2aSJacob Faibussowitsch       CHKERRQ(ISGetLocalSize(is,&n));
425f80ce2aSJacob Faibussowitsch       CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult));
433c429eb5SStefano Zampini     }
445f80ce2aSJacob Faibussowitsch     CHKERRQ(TestRenumber(is,mult));
455f80ce2aSJacob Faibussowitsch     CHKERRQ(ISDestroy(&is));
465f80ce2aSJacob Faibussowitsch     CHKERRQ(ISDestroy(&mult));
473c429eb5SStefano Zampini 
485f80ce2aSJacob Faibussowitsch     CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,2,-rank-1,-4,&is));
493c429eb5SStefano Zampini     if (c) {
503c429eb5SStefano Zampini       PetscInt n;
515f80ce2aSJacob Faibussowitsch       CHKERRQ(ISGetLocalSize(is,&n));
525f80ce2aSJacob Faibussowitsch       CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult));
533c429eb5SStefano Zampini     }
545f80ce2aSJacob Faibussowitsch     CHKERRQ(TestRenumber(is,mult));
555f80ce2aSJacob Faibussowitsch     CHKERRQ(ISDestroy(&is));
565f80ce2aSJacob Faibussowitsch     CHKERRQ(ISDestroy(&mult));
573c429eb5SStefano Zampini 
585f80ce2aSJacob Faibussowitsch     CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,10,4+rank,2,&is));
593c429eb5SStefano Zampini     if (c) {
603c429eb5SStefano Zampini       PetscInt n;
615f80ce2aSJacob Faibussowitsch       CHKERRQ(ISGetLocalSize(is,&n));
625f80ce2aSJacob Faibussowitsch       CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult));
633c429eb5SStefano Zampini     }
645f80ce2aSJacob Faibussowitsch     CHKERRQ(TestRenumber(is,mult));
655f80ce2aSJacob Faibussowitsch     CHKERRQ(ISDestroy(&is));
665f80ce2aSJacob Faibussowitsch     CHKERRQ(ISDestroy(&mult));
673c429eb5SStefano Zampini 
685f80ce2aSJacob Faibussowitsch     CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,10,-rank-1,2,&is));
693c429eb5SStefano Zampini     if (c) {
703c429eb5SStefano Zampini       PetscInt n;
715f80ce2aSJacob Faibussowitsch       CHKERRQ(ISGetLocalSize(is,&n));
725f80ce2aSJacob Faibussowitsch       CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult));
733c429eb5SStefano Zampini     }
745f80ce2aSJacob Faibussowitsch     CHKERRQ(TestRenumber(is,mult));
755f80ce2aSJacob Faibussowitsch     CHKERRQ(ISDestroy(&is));
765f80ce2aSJacob Faibussowitsch     CHKERRQ(ISDestroy(&mult));
773c429eb5SStefano Zampini   }
783c429eb5SStefano Zampini   /* Finalize */
79*b122ec5aSJacob Faibussowitsch   CHKERRQ(PetscFinalize());
80*b122ec5aSJacob Faibussowitsch   return 0;
813c429eb5SStefano Zampini }
823c429eb5SStefano Zampini 
833c429eb5SStefano Zampini /*TEST
843c429eb5SStefano Zampini 
853c429eb5SStefano Zampini   test:
863c429eb5SStefano Zampini     suffix: 1
873c429eb5SStefano Zampini     nsize: {{1 2}separate output}
883c429eb5SStefano Zampini 
893c429eb5SStefano Zampini TEST*/
90