13c429eb5SStefano Zampini static char help[] = "Tests ISRenumber.\n\n"; 23c429eb5SStefano Zampini 33c429eb5SStefano Zampini #include <petscis.h> 43c429eb5SStefano Zampini 5d71ae5a4SJacob Faibussowitsch PetscErrorCode TestRenumber(IS is, IS mult) 6d71ae5a4SJacob Faibussowitsch { 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)); 23*3ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 243c429eb5SStefano Zampini } 253c429eb5SStefano Zampini 26d71ae5a4SJacob Faibussowitsch int main(int argc, char **argv) 27d71ae5a4SJacob Faibussowitsch { 283c429eb5SStefano Zampini IS is; 293c429eb5SStefano Zampini PetscMPIInt size, rank; 303c429eb5SStefano Zampini 31327415f7SBarry 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