xref: /petsc/src/vec/is/tests/ex6.c (revision f97672e55eacc8688507b9471cd7ec2664d7f203)
1 static char help[] = "Tests ISRenumber.\n\n";
2 
3 #include <petscis.h>
4 
5 PetscErrorCode TestRenumber(IS is, IS mult)
6 {
7   IS       nis;
8   PetscInt N;
9 
10   PetscFunctionBegin;
11   PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is),"\n-----------------\n"));
12   PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is),"\nInitial\n"));
13   PetscCall(ISView(is,NULL));
14   if (mult) {
15     PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is),"\nMult\n"));
16     PetscCall(ISView(mult,NULL));
17   }
18   PetscCall(ISRenumber(is,mult,&N,NULL));
19   PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is),"\nRenumbered, unique entries %" PetscInt_FMT "\n",N));
20   PetscCall(ISRenumber(is,mult,NULL,&nis));
21   PetscCall(ISView(nis,NULL));
22   PetscCall(ISDestroy(&nis));
23   PetscFunctionReturn(0);
24 }
25 
26 int main(int argc, char **argv)
27 {
28   IS              is;
29   PetscMPIInt     size, rank;
30 
31   PetscCall(PetscInitialize(&argc, &argv, NULL, help));
32   PetscCallMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size));
33   PetscCallMPI(MPI_Comm_rank(PETSC_COMM_WORLD,&rank));
34 
35   for (PetscInt c = 0; c < 3; c++) {
36     IS mult = NULL;
37 
38     PetscCall(ISCreateStride(PETSC_COMM_WORLD,0,0,0,&is));
39     if (c) {
40       PetscInt n;
41       PetscCall(ISGetLocalSize(is,&n));
42       PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult));
43     }
44     PetscCall(TestRenumber(is,mult));
45     PetscCall(ISDestroy(&is));
46     PetscCall(ISDestroy(&mult));
47 
48     PetscCall(ISCreateStride(PETSC_COMM_WORLD,2,-rank-1,-4,&is));
49     if (c) {
50       PetscInt n;
51       PetscCall(ISGetLocalSize(is,&n));
52       PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult));
53     }
54     PetscCall(TestRenumber(is,mult));
55     PetscCall(ISDestroy(&is));
56     PetscCall(ISDestroy(&mult));
57 
58     PetscCall(ISCreateStride(PETSC_COMM_WORLD,10,4+rank,2,&is));
59     if (c) {
60       PetscInt n;
61       PetscCall(ISGetLocalSize(is,&n));
62       PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult));
63     }
64     PetscCall(TestRenumber(is,mult));
65     PetscCall(ISDestroy(&is));
66     PetscCall(ISDestroy(&mult));
67 
68     PetscCall(ISCreateStride(PETSC_COMM_WORLD,10,-rank-1,2,&is));
69     if (c) {
70       PetscInt n;
71       PetscCall(ISGetLocalSize(is,&n));
72       PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult));
73     }
74     PetscCall(TestRenumber(is,mult));
75     PetscCall(ISDestroy(&is));
76     PetscCall(ISDestroy(&mult));
77   }
78   /* Finalize */
79   PetscCall(PetscFinalize());
80   return 0;
81 }
82 
83 /*TEST
84 
85   test:
86     suffix: 1
87     nsize: {{1 2}separate output}
88 
89 TEST*/
90