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