xref: /petsc/src/vec/is/tests/ex3.c (revision 4ad8454beace47809662cdae21ee081016eaa39a)
1 static char help[] = "Tests ISSetBlockSize() on ISBlock().\n\n";
2 
3 #include <petscis.h>
4 #include <petscviewer.h>
5 
6 int main(int argc, char **argv)
7 {
8   PetscInt        bs = 2, n = 3, ix[3] = {1, 7, 9};
9   const PetscInt *indices;
10   IS              is;
11   PetscBool       broken = PETSC_FALSE;
12 
13   PetscFunctionBeginUser;
14   PetscCall(PetscInitialize(&argc, &argv, (char *)0, help));
15   PetscCall(PetscOptionsGetBool(NULL, NULL, "-broken", &broken, NULL));
16   PetscCall(ISCreateBlock(PETSC_COMM_SELF, bs, n, ix, PETSC_COPY_VALUES, &is));
17   PetscCall(ISGetIndices(is, &indices));
18   PetscCall(PetscIntView(bs * 3, indices, NULL));
19   PetscCall(ISRestoreIndices(is, &indices));
20   if (broken) {
21     PetscCall(ISSetBlockSize(is, 3));
22     PetscCall(ISGetIndices(is, &indices));
23     PetscCall(PetscIntView(bs * 3, indices, NULL));
24     PetscCall(ISRestoreIndices(is, &indices));
25   }
26   PetscCall(ISDestroy(&is));
27 
28   PetscCall(PetscFinalize());
29   return 0;
30 }
31 
32 /*TEST
33 
34    test:
35 
36    test:
37      suffix: 2
38      args: -broken
39      filter: Error: grep -o "[0]PETSC ERROR: Object is in wrong state"
40 
41 TEST*/
42