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*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscPrintf(PetscObjectComm((PetscObject)is),"\n-----------------\n")); 12*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscPrintf(PetscObjectComm((PetscObject)is),"\nInitial\n")); 13*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISView(is,NULL)); 143c429eb5SStefano Zampini if (mult) { 15*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscPrintf(PetscObjectComm((PetscObject)is),"\nMult\n")); 16*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISView(mult,NULL)); 173c429eb5SStefano Zampini } 18*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISRenumber(is,mult,&N,NULL)); 19*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscPrintf(PetscObjectComm((PetscObject)is),"\nRenumbered, unique entries %" PetscInt_FMT "\n",N)); 20*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISRenumber(is,mult,NULL,&nis)); 21*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISView(nis,NULL)); 22*5f80ce2aSJacob 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 PetscErrorCode ierr; 303c429eb5SStefano Zampini PetscMPIInt size, rank; 313c429eb5SStefano Zampini 323c429eb5SStefano Zampini ierr = PetscInitialize(&argc, &argv, NULL, help); if (ierr) return ierr; 33*5f80ce2aSJacob Faibussowitsch CHKERRMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size)); 34*5f80ce2aSJacob Faibussowitsch CHKERRMPI(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 39*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,0,0,0,&is)); 403c429eb5SStefano Zampini if (c) { 413c429eb5SStefano Zampini PetscInt n; 42*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISGetLocalSize(is,&n)); 43*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult)); 443c429eb5SStefano Zampini } 45*5f80ce2aSJacob Faibussowitsch CHKERRQ(TestRenumber(is,mult)); 46*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISDestroy(&is)); 47*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISDestroy(&mult)); 483c429eb5SStefano Zampini 49*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,2,-rank-1,-4,&is)); 503c429eb5SStefano Zampini if (c) { 513c429eb5SStefano Zampini PetscInt n; 52*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISGetLocalSize(is,&n)); 53*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult)); 543c429eb5SStefano Zampini } 55*5f80ce2aSJacob Faibussowitsch CHKERRQ(TestRenumber(is,mult)); 56*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISDestroy(&is)); 57*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISDestroy(&mult)); 583c429eb5SStefano Zampini 59*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,10,4+rank,2,&is)); 603c429eb5SStefano Zampini if (c) { 613c429eb5SStefano Zampini PetscInt n; 62*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISGetLocalSize(is,&n)); 63*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult)); 643c429eb5SStefano Zampini } 65*5f80ce2aSJacob Faibussowitsch CHKERRQ(TestRenumber(is,mult)); 66*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISDestroy(&is)); 67*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISDestroy(&mult)); 683c429eb5SStefano Zampini 69*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,10,-rank-1,2,&is)); 703c429eb5SStefano Zampini if (c) { 713c429eb5SStefano Zampini PetscInt n; 72*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISGetLocalSize(is,&n)); 73*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult)); 743c429eb5SStefano Zampini } 75*5f80ce2aSJacob Faibussowitsch CHKERRQ(TestRenumber(is,mult)); 76*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISDestroy(&is)); 77*5f80ce2aSJacob Faibussowitsch CHKERRQ(ISDestroy(&mult)); 783c429eb5SStefano Zampini } 793c429eb5SStefano Zampini /* Finalize */ 803c429eb5SStefano Zampini ierr = PetscFinalize(); 813c429eb5SStefano Zampini return ierr; 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