1 static char help[] = "Tests ISRenumber.\n\n"; 2 3 #include <petscis.h> 4 5 PetscErrorCode TestRenumber(IS is, IS mult) 6 { 7 IS nis; 8 PetscInt N; 9 PetscErrorCode ierr; 10 11 PetscFunctionBegin; 12 ierr = PetscPrintf(PetscObjectComm((PetscObject)is),"\n-----------------\n");CHKERRQ(ierr); 13 ierr = PetscPrintf(PetscObjectComm((PetscObject)is),"\nInitial\n");CHKERRQ(ierr); 14 ierr = ISView(is,NULL);CHKERRQ(ierr); 15 if (mult) { 16 ierr = PetscPrintf(PetscObjectComm((PetscObject)is),"\nMult\n");CHKERRQ(ierr); 17 ierr = ISView(mult,NULL);CHKERRQ(ierr); 18 } 19 ierr = ISRenumber(is,mult,&N,NULL);CHKERRQ(ierr); 20 ierr = PetscPrintf(PetscObjectComm((PetscObject)is),"\nRenumbered, unique entries %" PetscInt_FMT "\n",N);CHKERRQ(ierr); 21 ierr = ISRenumber(is,mult,NULL,&nis);CHKERRQ(ierr); 22 ierr = ISView(nis,NULL);CHKERRQ(ierr); 23 ierr = ISDestroy(&nis);CHKERRQ(ierr); 24 PetscFunctionReturn(0); 25 } 26 27 int main(int argc, char **argv) 28 { 29 IS is; 30 PetscErrorCode ierr; 31 PetscMPIInt size, rank; 32 33 ierr = PetscInitialize(&argc, &argv, NULL, help); if (ierr) return ierr; 34 ierr = MPI_Comm_size(PETSC_COMM_WORLD,&size);CHKERRMPI(ierr); 35 ierr = MPI_Comm_rank(PETSC_COMM_WORLD,&rank);CHKERRMPI(ierr); 36 37 for (PetscInt c = 0; c < 3; c++) { 38 IS mult = NULL; 39 40 ierr = ISCreateStride(PETSC_COMM_WORLD,0,0,0,&is);CHKERRQ(ierr); 41 if (c) { 42 PetscInt n; 43 ierr = ISGetLocalSize(is,&n);CHKERRQ(ierr); 44 ierr = ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult);CHKERRQ(ierr); 45 } 46 ierr = TestRenumber(is,mult);CHKERRQ(ierr); 47 ierr = ISDestroy(&is);CHKERRQ(ierr); 48 ierr = ISDestroy(&mult);CHKERRQ(ierr); 49 50 ierr = ISCreateStride(PETSC_COMM_WORLD,2,-rank-1,-4,&is);CHKERRQ(ierr); 51 if (c) { 52 PetscInt n; 53 ierr = ISGetLocalSize(is,&n);CHKERRQ(ierr); 54 ierr = ISCreateStride(PETSC_COMM_WORLD,n,c-2,0,&mult);CHKERRQ(ierr); 55 } 56 ierr = TestRenumber(is,mult);CHKERRQ(ierr); 57 ierr = ISDestroy(&is);CHKERRQ(ierr); 58 ierr = ISDestroy(&mult);CHKERRQ(ierr); 59 60 ierr = ISCreateStride(PETSC_COMM_WORLD,10,4+rank,2,&is);CHKERRQ(ierr); 61 if (c) { 62 PetscInt n; 63 ierr = ISGetLocalSize(is,&n);CHKERRQ(ierr); 64 ierr = ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult);CHKERRQ(ierr); 65 } 66 ierr = TestRenumber(is,mult);CHKERRQ(ierr); 67 ierr = ISDestroy(&is);CHKERRQ(ierr); 68 ierr = ISDestroy(&mult);CHKERRQ(ierr); 69 70 ierr = ISCreateStride(PETSC_COMM_WORLD,10,-rank-1,2,&is);CHKERRQ(ierr); 71 if (c) { 72 PetscInt n; 73 ierr = ISGetLocalSize(is,&n);CHKERRQ(ierr); 74 ierr = ISCreateStride(PETSC_COMM_WORLD,n,c-2,1,&mult);CHKERRQ(ierr); 75 } 76 ierr = TestRenumber(is,mult);CHKERRQ(ierr); 77 ierr = ISDestroy(&is);CHKERRQ(ierr); 78 ierr = ISDestroy(&mult);CHKERRQ(ierr); 79 } 80 /* Finalize */ 81 ierr = PetscFinalize(); 82 return ierr; 83 } 84 85 /*TEST 86 87 test: 88 suffix: 1 89 nsize: {{1 2}separate output} 90 91 TEST*/ 92