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; 119566063dSJacob Faibussowitsch PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is),"\n-----------------\n")); 129566063dSJacob Faibussowitsch PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is),"\nInitial\n")); 139566063dSJacob Faibussowitsch PetscCall(ISView(is,NULL)); 143c429eb5SStefano Zampini if (mult) { 159566063dSJacob Faibussowitsch PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is),"\nMult\n")); 169566063dSJacob Faibussowitsch PetscCall(ISView(mult,NULL)); 173c429eb5SStefano Zampini } 189566063dSJacob Faibussowitsch PetscCall(ISRenumber(is,mult,&N,NULL)); 199566063dSJacob Faibussowitsch PetscCall(PetscPrintf(PetscObjectComm((PetscObject)is),"\nRenumbered, unique entries %" PetscInt_FMT "\n",N)); 209566063dSJacob Faibussowitsch PetscCall(ISRenumber(is,mult,NULL,&nis)); 219566063dSJacob Faibussowitsch PetscCall(ISView(nis,NULL)); 229566063dSJacob 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*327415f7SBarry Smith PetscFunctionBeginUser; 329566063dSJacob Faibussowitsch PetscCall(PetscInitialize(&argc, &argv, NULL, help)); 339566063dSJacob Faibussowitsch PetscCallMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size)); 349566063dSJacob Faibussowitsch PetscCallMPI(MPI_Comm_rank(PETSC_COMM_WORLD,&rank)); 353c429eb5SStefano Zampini 363c429eb5SStefano Zampini for (PetscInt c = 0; c < 3; c++) { 373c429eb5SStefano Zampini IS mult = NULL; 383c429eb5SStefano Zampini 399566063dSJacob Faibussowitsch PetscCall(ISCreateStride(PETSC_COMM_WORLD,0,0,0,&is)); 403c429eb5SStefano Zampini if (c) { 413c429eb5SStefano Zampini PetscInt n; 429566063dSJacob Faibussowitsch PetscCall(ISGetLocalSize(is,&n)); 439566063dSJacob Faibussowitsch PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult)); 443c429eb5SStefano Zampini } 459566063dSJacob Faibussowitsch PetscCall(TestRenumber(is,mult)); 469566063dSJacob Faibussowitsch PetscCall(ISDestroy(&is)); 479566063dSJacob Faibussowitsch PetscCall(ISDestroy(&mult)); 483c429eb5SStefano Zampini 499566063dSJacob Faibussowitsch PetscCall(ISCreateStride(PETSC_COMM_WORLD,2,-rank-1,-4,&is)); 503c429eb5SStefano Zampini if (c) { 513c429eb5SStefano Zampini PetscInt n; 529566063dSJacob Faibussowitsch PetscCall(ISGetLocalSize(is,&n)); 539566063dSJacob Faibussowitsch PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult)); 543c429eb5SStefano Zampini } 559566063dSJacob Faibussowitsch PetscCall(TestRenumber(is,mult)); 569566063dSJacob Faibussowitsch PetscCall(ISDestroy(&is)); 579566063dSJacob Faibussowitsch PetscCall(ISDestroy(&mult)); 583c429eb5SStefano Zampini 599566063dSJacob Faibussowitsch PetscCall(ISCreateStride(PETSC_COMM_WORLD,10,4+rank,2,&is)); 603c429eb5SStefano Zampini if (c) { 613c429eb5SStefano Zampini PetscInt n; 629566063dSJacob Faibussowitsch PetscCall(ISGetLocalSize(is,&n)); 639566063dSJacob Faibussowitsch PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult)); 643c429eb5SStefano Zampini } 659566063dSJacob Faibussowitsch PetscCall(TestRenumber(is,mult)); 669566063dSJacob Faibussowitsch PetscCall(ISDestroy(&is)); 679566063dSJacob Faibussowitsch PetscCall(ISDestroy(&mult)); 683c429eb5SStefano Zampini 699566063dSJacob Faibussowitsch PetscCall(ISCreateStride(PETSC_COMM_WORLD,10,-rank-1,2,&is)); 703c429eb5SStefano Zampini if (c) { 713c429eb5SStefano Zampini PetscInt n; 729566063dSJacob Faibussowitsch PetscCall(ISGetLocalSize(is,&n)); 739566063dSJacob Faibussowitsch PetscCall(ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult)); 743c429eb5SStefano Zampini } 759566063dSJacob Faibussowitsch PetscCall(TestRenumber(is,mult)); 769566063dSJacob Faibussowitsch PetscCall(ISDestroy(&is)); 779566063dSJacob Faibussowitsch PetscCall(ISDestroy(&mult)); 783c429eb5SStefano Zampini } 793c429eb5SStefano Zampini /* Finalize */ 809566063dSJacob Faibussowitsch PetscCall(PetscFinalize()); 81b122ec5aSJacob Faibussowitsch return 0; 823c429eb5SStefano Zampini } 833c429eb5SStefano Zampini 843c429eb5SStefano Zampini /*TEST 853c429eb5SStefano Zampini 863c429eb5SStefano Zampini test: 873c429eb5SStefano Zampini suffix: 1 883c429eb5SStefano Zampini nsize: {{1 2}separate output} 893c429eb5SStefano Zampini 903c429eb5SStefano Zampini TEST*/ 91