static char help[] = "Test conversion of ScaLAPACK matrices.\n\n"; #include int main(int argc, char** argv) { Mat A,A_scalapack; PetscInt i,j,M=10,N=5,nloc,mloc,nrows,ncols; PetscErrorCode ierr; PetscMPIInt rank,size; IS isrows,iscols; const PetscInt *rows,*cols; PetscScalar *v; MatType type; PetscBool isDense,isAIJ,flg; ierr = PetscInitialize(&argc,&argv,(char*)0,help);if (ierr) return ierr; CHKERRMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size)); CHKERRMPI(MPI_Comm_rank(PETSC_COMM_WORLD,&rank)); CHKERRQ(PetscOptionsGetInt(NULL,NULL,"-M",&M,NULL)); CHKERRQ(PetscOptionsGetInt(NULL,NULL,"-N",&N,NULL)); /* Create a matrix */ CHKERRQ(MatCreate(PETSC_COMM_WORLD, &A)); mloc = PETSC_DECIDE; CHKERRQ(PetscSplitOwnershipEqual(PETSC_COMM_WORLD,&mloc,&M)); nloc = PETSC_DECIDE; CHKERRQ(PetscSplitOwnershipEqual(PETSC_COMM_WORLD,&nloc,&N)); CHKERRQ(MatSetSizes(A,mloc,nloc,M,N)); CHKERRQ(MatSetType(A,MATDENSE)); CHKERRQ(MatSetFromOptions(A)); CHKERRQ(MatSetUp(A)); /* Set local matrix entries */ CHKERRQ(MatGetOwnershipIS(A,&isrows,&iscols)); CHKERRQ(ISGetLocalSize(isrows,&nrows)); CHKERRQ(ISGetIndices(isrows,&rows)); CHKERRQ(ISGetLocalSize(iscols,&ncols)); CHKERRQ(ISGetIndices(iscols,&cols)); CHKERRQ(PetscMalloc1(nrows*ncols,&v)); for (i=0; i