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