static char help[] = "Test MatSetValues() by converting MATDENSE to MATELEMENTAL. \n\ Modified from the code contributed by Yaning Liu @lbl.gov \n\n"; /* Example: mpiexec -n ./ex103 mpiexec -n ./ex103 -mat_type elemental -mat_view mpiexec -n ./ex103 -mat_type aij */ #include int main(int argc, char** argv) { Mat A,A_elemental; PetscInt i,j,M=10,N=5,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)); /* Creat a matrix */ CHKERRQ(PetscOptionsGetInt(NULL,NULL,"-M",&M,NULL)); CHKERRQ(PetscOptionsGetInt(NULL,NULL,"-N",&N,NULL)); CHKERRQ(MatCreate(PETSC_COMM_WORLD, &A)); CHKERRQ(MatSetSizes(A,PETSC_DECIDE,PETSC_DECIDE,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