static char help[] = "Example of using graph partitioning with a matrix in which some procs have empty ownership\n\n"; /*T Concepts: Mat^mat partitioning Concepts: Mat^image segmentation Processors: n T*/ #include int main(int argc, char **args) { Mat A; MatPartitioning part; IS is; PetscInt i,m,N,rstart,rend,nemptyranks,*emptyranks,nbigranks,*bigranks; PetscMPIInt rank,size; PetscErrorCode ierr; ierr = PetscInitialize(&argc,&args,(char*)0,help);if (ierr) return ierr; CHKERRMPI(MPI_Comm_rank(PETSC_COMM_WORLD,&rank)); CHKERRMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size)); nemptyranks = 10; nbigranks = 10; CHKERRQ(PetscMalloc2(nemptyranks,&emptyranks,nbigranks,&bigranks)); ierr = PetscOptionsBegin(PETSC_COMM_WORLD,NULL,"Partitioning example options",NULL);CHKERRQ(ierr); CHKERRQ(PetscOptionsIntArray("-emptyranks","Ranks to be skipped by partition","",emptyranks,&nemptyranks,NULL)); CHKERRQ(PetscOptionsIntArray("-bigranks","Ranks to be overloaded","",bigranks,&nbigranks,NULL)); ierr = PetscOptionsEnd();CHKERRQ(ierr); m = 1; for (i=0; i