xref: /petsc/src/vec/is/tests/ex6.c (revision 9566063d113dddea24716c546802770db7481bc0)
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*9566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is),"\n-----------------\n"));
12*9566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is),"\nInitial\n"));
13*9566063dSJacob Faibussowitsch   PetscCall(ISView(is,NULL));
143c429eb5SStefano Zampini   if (mult) {
15*9566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is),"\nMult\n"));
16*9566063dSJacob Faibussowitsch     PetscCall(ISView(mult,NULL));
173c429eb5SStefano Zampini   }
18*9566063dSJacob Faibussowitsch   PetscCall(ISRenumber(is,mult,&N,NULL));
19*9566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is),"\nRenumbered, unique entries %" PetscInt_FMT "\n",N));
20*9566063dSJacob Faibussowitsch   PetscCall(ISRenumber(is,mult,NULL,&nis));
21*9566063dSJacob Faibussowitsch   PetscCall(ISView(nis,NULL));
22*9566063dSJacob 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*9566063dSJacob Faibussowitsch   PetscCall(PetscInitialize(&argc, &argv, NULL, help));
32*9566063dSJacob Faibussowitsch   PetscCallMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size));
33*9566063dSJacob Faibussowitsch   PetscCallMPI(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 
38*9566063dSJacob Faibussowitsch     PetscCall(ISCreateStride(PETSC_COMM_WORLD,0,0,0,&is));
393c429eb5SStefano Zampini     if (c) {
403c429eb5SStefano Zampini       PetscInt n;
41*9566063dSJacob Faibussowitsch       PetscCall(ISGetLocalSize(is,&n));
42*9566063dSJacob Faibussowitsch       PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult));
433c429eb5SStefano Zampini     }
44*9566063dSJacob Faibussowitsch     PetscCall(TestRenumber(is,mult));
45*9566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&is));
46*9566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&mult));
473c429eb5SStefano Zampini 
48*9566063dSJacob Faibussowitsch     PetscCall(ISCreateStride(PETSC_COMM_WORLD,2,-rank-1,-4,&is));
493c429eb5SStefano Zampini     if (c) {
503c429eb5SStefano Zampini       PetscInt n;
51*9566063dSJacob Faibussowitsch       PetscCall(ISGetLocalSize(is,&n));
52*9566063dSJacob Faibussowitsch       PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult));
533c429eb5SStefano Zampini     }
54*9566063dSJacob Faibussowitsch     PetscCall(TestRenumber(is,mult));
55*9566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&is));
56*9566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&mult));
573c429eb5SStefano Zampini 
58*9566063dSJacob Faibussowitsch     PetscCall(ISCreateStride(PETSC_COMM_WORLD,10,4+rank,2,&is));
593c429eb5SStefano Zampini     if (c) {
603c429eb5SStefano Zampini       PetscInt n;
61*9566063dSJacob Faibussowitsch       PetscCall(ISGetLocalSize(is,&n));
62*9566063dSJacob Faibussowitsch       PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult));
633c429eb5SStefano Zampini     }
64*9566063dSJacob Faibussowitsch     PetscCall(TestRenumber(is,mult));
65*9566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&is));
66*9566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&mult));
673c429eb5SStefano Zampini 
68*9566063dSJacob Faibussowitsch     PetscCall(ISCreateStride(PETSC_COMM_WORLD,10,-rank-1,2,&is));
693c429eb5SStefano Zampini     if (c) {
703c429eb5SStefano Zampini       PetscInt n;
71*9566063dSJacob Faibussowitsch       PetscCall(ISGetLocalSize(is,&n));
72*9566063dSJacob Faibussowitsch       PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult));
733c429eb5SStefano Zampini     }
74*9566063dSJacob Faibussowitsch     PetscCall(TestRenumber(is,mult));
75*9566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&is));
76*9566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&mult));
773c429eb5SStefano Zampini   }
783c429eb5SStefano Zampini   /* Finalize */
79*9566063dSJacob Faibussowitsch   PetscCall(PetscFinalize());
80b122ec5aSJacob 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