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;

 30:   PetscInitialize(&argc, &argv, NULL, help);
 31:   MPI_Comm_size(PETSC_COMM_WORLD,&size);
 32:   MPI_Comm_rank(PETSC_COMM_WORLD,&rank);

 34:   for (PetscInt c = 0; c < 3; c++) {
 35:     IS mult = NULL;

 37:     ISCreateStride(PETSC_COMM_WORLD,0,0,0,&is);
 38:     if (c) {
 39:       PetscInt n;
 40:       ISGetLocalSize(is,&n);
 41:       ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult);
 42:     }
 43:     TestRenumber(is,mult);
 44:     ISDestroy(&is);
 45:     ISDestroy(&mult);

 47:     ISCreateStride(PETSC_COMM_WORLD,2,-rank-1,-4,&is);
 48:     if (c) {
 49:       PetscInt n;
 50:       ISGetLocalSize(is,&n);
 51:       ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult);
 52:     }
 53:     TestRenumber(is,mult);
 54:     ISDestroy(&is);
 55:     ISDestroy(&mult);

 57:     ISCreateStride(PETSC_COMM_WORLD,10,4+rank,2,&is);
 58:     if (c) {
 59:       PetscInt n;
 60:       ISGetLocalSize(is,&n);
 61:       ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult);
 62:     }
 63:     TestRenumber(is,mult);
 64:     ISDestroy(&is);
 65:     ISDestroy(&mult);

 67:     ISCreateStride(PETSC_COMM_WORLD,10,-rank-1,2,&is);
 68:     if (c) {
 69:       PetscInt n;
 70:       ISGetLocalSize(is,&n);
 71:       ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult);
 72:     }
 73:     TestRenumber(is,mult);
 74:     ISDestroy(&is);
 75:     ISDestroy(&mult);
 76:   }
 77:   /* Finalize */
 78:   PetscFinalize();
 79:   return 0;
 80: }

 82: /*TEST

 84:   test:
 85:     suffix: 1
 86:     nsize: {{1 2}separate output}

 88: TEST*/