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*/