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; 115f80ce2aSJacob Faibussowitsch CHKERRQ(PetscPrintf(PetscObjectComm((PetscObject)is),"\n-----------------\n")); 125f80ce2aSJacob Faibussowitsch CHKERRQ(PetscPrintf(PetscObjectComm((PetscObject)is),"\nInitial\n")); 135f80ce2aSJacob Faibussowitsch CHKERRQ(ISView(is,NULL)); 143c429eb5SStefano Zampini if (mult) { 155f80ce2aSJacob Faibussowitsch CHKERRQ(PetscPrintf(PetscObjectComm((PetscObject)is),"\nMult\n")); 165f80ce2aSJacob Faibussowitsch CHKERRQ(ISView(mult,NULL)); 173c429eb5SStefano Zampini } 185f80ce2aSJacob Faibussowitsch CHKERRQ(ISRenumber(is,mult,&N,NULL)); 195f80ce2aSJacob Faibussowitsch CHKERRQ(PetscPrintf(PetscObjectComm((PetscObject)is),"\nRenumbered, unique entries %" PetscInt_FMT "\n",N)); 205f80ce2aSJacob Faibussowitsch CHKERRQ(ISRenumber(is,mult,NULL,&nis)); 215f80ce2aSJacob Faibussowitsch CHKERRQ(ISView(nis,NULL)); 225f80ce2aSJacob Faibussowitsch CHKERRQ(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*b122ec5aSJacob Faibussowitsch CHKERRQ(PetscInitialize(&argc, &argv, NULL, help)); 325f80ce2aSJacob Faibussowitsch CHKERRMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size)); 335f80ce2aSJacob Faibussowitsch CHKERRMPI(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 385f80ce2aSJacob Faibussowitsch CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,0,0,0,&is)); 393c429eb5SStefano Zampini if (c) { 403c429eb5SStefano Zampini PetscInt n; 415f80ce2aSJacob Faibussowitsch CHKERRQ(ISGetLocalSize(is,&n)); 425f80ce2aSJacob Faibussowitsch CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult)); 433c429eb5SStefano Zampini } 445f80ce2aSJacob Faibussowitsch CHKERRQ(TestRenumber(is,mult)); 455f80ce2aSJacob Faibussowitsch CHKERRQ(ISDestroy(&is)); 465f80ce2aSJacob Faibussowitsch CHKERRQ(ISDestroy(&mult)); 473c429eb5SStefano Zampini 485f80ce2aSJacob Faibussowitsch CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,2,-rank-1,-4,&is)); 493c429eb5SStefano Zampini if (c) { 503c429eb5SStefano Zampini PetscInt n; 515f80ce2aSJacob Faibussowitsch CHKERRQ(ISGetLocalSize(is,&n)); 525f80ce2aSJacob Faibussowitsch CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult)); 533c429eb5SStefano Zampini } 545f80ce2aSJacob Faibussowitsch CHKERRQ(TestRenumber(is,mult)); 555f80ce2aSJacob Faibussowitsch CHKERRQ(ISDestroy(&is)); 565f80ce2aSJacob Faibussowitsch CHKERRQ(ISDestroy(&mult)); 573c429eb5SStefano Zampini 585f80ce2aSJacob Faibussowitsch CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,10,4+rank,2,&is)); 593c429eb5SStefano Zampini if (c) { 603c429eb5SStefano Zampini PetscInt n; 615f80ce2aSJacob Faibussowitsch CHKERRQ(ISGetLocalSize(is,&n)); 625f80ce2aSJacob Faibussowitsch CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult)); 633c429eb5SStefano Zampini } 645f80ce2aSJacob Faibussowitsch CHKERRQ(TestRenumber(is,mult)); 655f80ce2aSJacob Faibussowitsch CHKERRQ(ISDestroy(&is)); 665f80ce2aSJacob Faibussowitsch CHKERRQ(ISDestroy(&mult)); 673c429eb5SStefano Zampini 685f80ce2aSJacob Faibussowitsch CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,10,-rank-1,2,&is)); 693c429eb5SStefano Zampini if (c) { 703c429eb5SStefano Zampini PetscInt n; 715f80ce2aSJacob Faibussowitsch CHKERRQ(ISGetLocalSize(is,&n)); 725f80ce2aSJacob Faibussowitsch CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult)); 733c429eb5SStefano Zampini } 745f80ce2aSJacob Faibussowitsch CHKERRQ(TestRenumber(is,mult)); 755f80ce2aSJacob Faibussowitsch CHKERRQ(ISDestroy(&is)); 765f80ce2aSJacob Faibussowitsch CHKERRQ(ISDestroy(&mult)); 773c429eb5SStefano Zampini } 783c429eb5SStefano Zampini /* Finalize */ 79*b122ec5aSJacob Faibussowitsch CHKERRQ(PetscFinalize()); 80*b122ec5aSJacob 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