xref: /petsc/src/vec/is/tests/ex6.c (revision 327415f76d85372a4417cf1aaa14db707d4d6c04)
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;
119566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is),"\n-----------------\n"));
129566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is),"\nInitial\n"));
139566063dSJacob Faibussowitsch   PetscCall(ISView(is,NULL));
143c429eb5SStefano Zampini   if (mult) {
159566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is),"\nMult\n"));
169566063dSJacob Faibussowitsch     PetscCall(ISView(mult,NULL));
173c429eb5SStefano Zampini   }
189566063dSJacob Faibussowitsch   PetscCall(ISRenumber(is,mult,&N,NULL));
199566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is),"\nRenumbered, unique entries %" PetscInt_FMT "\n",N));
209566063dSJacob Faibussowitsch   PetscCall(ISRenumber(is,mult,NULL,&nis));
219566063dSJacob Faibussowitsch   PetscCall(ISView(nis,NULL));
229566063dSJacob Faibussowitsch   PetscCall(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*327415f7SBarry Smith   PetscFunctionBeginUser;
329566063dSJacob Faibussowitsch   PetscCall(PetscInitialize(&argc, &argv, NULL, help));
339566063dSJacob Faibussowitsch   PetscCallMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size));
349566063dSJacob Faibussowitsch   PetscCallMPI(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 
399566063dSJacob Faibussowitsch     PetscCall(ISCreateStride(PETSC_COMM_WORLD,0,0,0,&is));
403c429eb5SStefano Zampini     if (c) {
413c429eb5SStefano Zampini       PetscInt n;
429566063dSJacob Faibussowitsch       PetscCall(ISGetLocalSize(is,&n));
439566063dSJacob Faibussowitsch       PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult));
443c429eb5SStefano Zampini     }
459566063dSJacob Faibussowitsch     PetscCall(TestRenumber(is,mult));
469566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&is));
479566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&mult));
483c429eb5SStefano Zampini 
499566063dSJacob Faibussowitsch     PetscCall(ISCreateStride(PETSC_COMM_WORLD,2,-rank-1,-4,&is));
503c429eb5SStefano Zampini     if (c) {
513c429eb5SStefano Zampini       PetscInt n;
529566063dSJacob Faibussowitsch       PetscCall(ISGetLocalSize(is,&n));
539566063dSJacob Faibussowitsch       PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult));
543c429eb5SStefano Zampini     }
559566063dSJacob Faibussowitsch     PetscCall(TestRenumber(is,mult));
569566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&is));
579566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&mult));
583c429eb5SStefano Zampini 
599566063dSJacob Faibussowitsch     PetscCall(ISCreateStride(PETSC_COMM_WORLD,10,4+rank,2,&is));
603c429eb5SStefano Zampini     if (c) {
613c429eb5SStefano Zampini       PetscInt n;
629566063dSJacob Faibussowitsch       PetscCall(ISGetLocalSize(is,&n));
639566063dSJacob Faibussowitsch       PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult));
643c429eb5SStefano Zampini     }
659566063dSJacob Faibussowitsch     PetscCall(TestRenumber(is,mult));
669566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&is));
679566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&mult));
683c429eb5SStefano Zampini 
699566063dSJacob Faibussowitsch     PetscCall(ISCreateStride(PETSC_COMM_WORLD,10,-rank-1,2,&is));
703c429eb5SStefano Zampini     if (c) {
713c429eb5SStefano Zampini       PetscInt n;
729566063dSJacob Faibussowitsch       PetscCall(ISGetLocalSize(is,&n));
739566063dSJacob Faibussowitsch       PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult));
743c429eb5SStefano Zampini     }
759566063dSJacob Faibussowitsch     PetscCall(TestRenumber(is,mult));
769566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&is));
779566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&mult));
783c429eb5SStefano Zampini   }
793c429eb5SStefano Zampini   /* Finalize */
809566063dSJacob Faibussowitsch   PetscCall(PetscFinalize());
81b122ec5aSJacob Faibussowitsch   return 0;
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