13c429eb5SStefano Zampini static char help[] = "Tests ISRenumber.\n\n"; 23c429eb5SStefano Zampini 33c429eb5SStefano Zampini #include <petscis.h> 43c429eb5SStefano Zampini 53c429eb5SStefano Zampini PetscErrorCode TestRenumber(IS is, IS mult) 63c429eb5SStefano Zampini { 73c429eb5SStefano Zampini IS nis; 83c429eb5SStefano Zampini PetscInt N; 93c429eb5SStefano Zampini 103c429eb5SStefano Zampini PetscFunctionBegin; 11*9566063dSJacob Faibussowitsch PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is),"\n-----------------\n")); 12*9566063dSJacob Faibussowitsch PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is),"\nInitial\n")); 13*9566063dSJacob Faibussowitsch PetscCall(ISView(is,NULL)); 143c429eb5SStefano Zampini if (mult) { 15*9566063dSJacob Faibussowitsch PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is),"\nMult\n")); 16*9566063dSJacob Faibussowitsch PetscCall(ISView(mult,NULL)); 173c429eb5SStefano Zampini } 18*9566063dSJacob Faibussowitsch PetscCall(ISRenumber(is,mult,&N,NULL)); 19*9566063dSJacob Faibussowitsch PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is),"\nRenumbered, unique entries %" PetscInt_FMT "\n",N)); 20*9566063dSJacob Faibussowitsch PetscCall(ISRenumber(is,mult,NULL,&nis)); 21*9566063dSJacob Faibussowitsch PetscCall(ISView(nis,NULL)); 22*9566063dSJacob Faibussowitsch PetscCall(ISDestroy(&nis)); 233c429eb5SStefano Zampini PetscFunctionReturn(0); 243c429eb5SStefano Zampini } 253c429eb5SStefano Zampini 263c429eb5SStefano Zampini int main(int argc, char **argv) 273c429eb5SStefano Zampini { 283c429eb5SStefano Zampini IS is; 293c429eb5SStefano Zampini PetscMPIInt size, rank; 303c429eb5SStefano Zampini 31*9566063dSJacob Faibussowitsch PetscCall(PetscInitialize(&argc, &argv, NULL, help)); 32*9566063dSJacob Faibussowitsch PetscCallMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size)); 33*9566063dSJacob Faibussowitsch PetscCallMPI(MPI_Comm_rank(PETSC_COMM_WORLD,&rank)); 343c429eb5SStefano Zampini 353c429eb5SStefano Zampini for (PetscInt c = 0; c < 3; c++) { 363c429eb5SStefano Zampini IS mult = NULL; 373c429eb5SStefano Zampini 38*9566063dSJacob Faibussowitsch PetscCall(ISCreateStride(PETSC_COMM_WORLD,0,0,0,&is)); 393c429eb5SStefano Zampini if (c) { 403c429eb5SStefano Zampini PetscInt n; 41*9566063dSJacob Faibussowitsch PetscCall(ISGetLocalSize(is,&n)); 42*9566063dSJacob Faibussowitsch PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult)); 433c429eb5SStefano Zampini } 44*9566063dSJacob Faibussowitsch PetscCall(TestRenumber(is,mult)); 45*9566063dSJacob Faibussowitsch PetscCall(ISDestroy(&is)); 46*9566063dSJacob Faibussowitsch PetscCall(ISDestroy(&mult)); 473c429eb5SStefano Zampini 48*9566063dSJacob Faibussowitsch PetscCall(ISCreateStride(PETSC_COMM_WORLD,2,-rank-1,-4,&is)); 493c429eb5SStefano Zampini if (c) { 503c429eb5SStefano Zampini PetscInt n; 51*9566063dSJacob Faibussowitsch PetscCall(ISGetLocalSize(is,&n)); 52*9566063dSJacob Faibussowitsch PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult)); 533c429eb5SStefano Zampini } 54*9566063dSJacob Faibussowitsch PetscCall(TestRenumber(is,mult)); 55*9566063dSJacob Faibussowitsch PetscCall(ISDestroy(&is)); 56*9566063dSJacob Faibussowitsch PetscCall(ISDestroy(&mult)); 573c429eb5SStefano Zampini 58*9566063dSJacob Faibussowitsch PetscCall(ISCreateStride(PETSC_COMM_WORLD,10,4+rank,2,&is)); 593c429eb5SStefano Zampini if (c) { 603c429eb5SStefano Zampini PetscInt n; 61*9566063dSJacob Faibussowitsch PetscCall(ISGetLocalSize(is,&n)); 62*9566063dSJacob Faibussowitsch PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult)); 633c429eb5SStefano Zampini } 64*9566063dSJacob Faibussowitsch PetscCall(TestRenumber(is,mult)); 65*9566063dSJacob Faibussowitsch PetscCall(ISDestroy(&is)); 66*9566063dSJacob Faibussowitsch PetscCall(ISDestroy(&mult)); 673c429eb5SStefano Zampini 68*9566063dSJacob Faibussowitsch PetscCall(ISCreateStride(PETSC_COMM_WORLD,10,-rank-1,2,&is)); 693c429eb5SStefano Zampini if (c) { 703c429eb5SStefano Zampini PetscInt n; 71*9566063dSJacob Faibussowitsch PetscCall(ISGetLocalSize(is,&n)); 72*9566063dSJacob Faibussowitsch PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult)); 733c429eb5SStefano Zampini } 74*9566063dSJacob Faibussowitsch PetscCall(TestRenumber(is,mult)); 75*9566063dSJacob Faibussowitsch PetscCall(ISDestroy(&is)); 76*9566063dSJacob Faibussowitsch PetscCall(ISDestroy(&mult)); 773c429eb5SStefano Zampini } 783c429eb5SStefano Zampini /* Finalize */ 79*9566063dSJacob Faibussowitsch PetscCall(PetscFinalize()); 80b122ec5aSJacob Faibussowitsch return 0; 813c429eb5SStefano Zampini } 823c429eb5SStefano Zampini 833c429eb5SStefano Zampini /*TEST 843c429eb5SStefano Zampini 853c429eb5SStefano Zampini test: 863c429eb5SStefano Zampini suffix: 1 873c429eb5SStefano Zampini nsize: {{1 2}separate output} 883c429eb5SStefano Zampini 893c429eb5SStefano Zampini TEST*/ 90