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