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 PetscFunctionBeginUser; 32 PetscCall(PetscInitialize(&argc, &argv, NULL, help)); 33 PetscCallMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size)); 34 PetscCallMPI(MPI_Comm_rank(PETSC_COMM_WORLD,&rank)); 35 36 for (PetscInt c = 0; c < 3; c++) { 37 IS mult = NULL; 38 39 PetscCall(ISCreateStride(PETSC_COMM_WORLD,0,0,0,&is)); 40 if (c) { 41 PetscInt n; 42 PetscCall(ISGetLocalSize(is,&n)); 43 PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult)); 44 } 45 PetscCall(TestRenumber(is,mult)); 46 PetscCall(ISDestroy(&is)); 47 PetscCall(ISDestroy(&mult)); 48 49 PetscCall(ISCreateStride(PETSC_COMM_WORLD,2,-rank-1,-4,&is)); 50 if (c) { 51 PetscInt n; 52 PetscCall(ISGetLocalSize(is,&n)); 53 PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult)); 54 } 55 PetscCall(TestRenumber(is,mult)); 56 PetscCall(ISDestroy(&is)); 57 PetscCall(ISDestroy(&mult)); 58 59 PetscCall(ISCreateStride(PETSC_COMM_WORLD,10,4+rank,2,&is)); 60 if (c) { 61 PetscInt n; 62 PetscCall(ISGetLocalSize(is,&n)); 63 PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult)); 64 } 65 PetscCall(TestRenumber(is,mult)); 66 PetscCall(ISDestroy(&is)); 67 PetscCall(ISDestroy(&mult)); 68 69 PetscCall(ISCreateStride(PETSC_COMM_WORLD,10,-rank-1,2,&is)); 70 if (c) { 71 PetscInt n; 72 PetscCall(ISGetLocalSize(is,&n)); 73 PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult)); 74 } 75 PetscCall(TestRenumber(is,mult)); 76 PetscCall(ISDestroy(&is)); 77 PetscCall(ISDestroy(&mult)); 78 } 79 /* Finalize */ 80 PetscCall(PetscFinalize()); 81 return 0; 82 } 83 84 /*TEST 85 86 test: 87 suffix: 1 88 nsize: {{1 2}separate output} 89 90 TEST*/ 91