Hello everyone, I have a few quick questions on BAIJ matrix in petsc.
1) In the remark of the function MatCreateMPIBAIJWithArrays, it says " bs - the block size, only a block size of 1 is supported". Why must the block size be 1? Is this a typo? http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/ MatCreateMPIBAIJWithArrays.html 2) In the Line 4040 of the implemention of MatCreateMPIBAIJWithArrays, would the matrix type be matmpibaij instead of matmpiSbaij? http://www.mcs.anl.gov/petsc/petsc-current/src/mat/impls/ baij/mpi/mpibaij.c.html#MatCreateMPIBAIJWithArrays 4031: PetscErrorCode MatCreateMPIBAIJWithArrays(MPI_Comm comm,PetscInt bs,PetscInt m,PetscInt n,PetscInt M,PetscInt N,const PetscInt i[],const PetscInt j[],const PetscScalar a[],Mat *mat) 4032: { 4036: if (i[0]) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_OUTOFRANGE,"i (row indices) must start with 0"); 4037: if (m < 0) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_OUTOFRANGE,"local number of rows (m) cannot be PETSC_DECIDE, or negative"); 4038: MatCreate(comm,mat); 4039: MatSetSizes(*mat,m,n,M,N); 4040: MatSetType(*mat,MATMPISBAIJ); 4041: MatSetOption(*mat,MAT_ROW_ORIENTED,PETSC_FALSE); 4042: MatMPIBAIJSetPreallocationCSR(*mat,bs,i,j,a); 4043: MatSetOption(*mat,MAT_ROW_ORIENTED,PETSC_TRUE); 4044: return(0); 4045: } 3) I want to create a petsc matrix M equivalent to the sum of two block csr matrix/array (M1csr, M2csr). What is the best way to achieve it? I am thinking of created two petsc baij matrix (M1baij and M2baij) by calling MatCreateMPIBAIJWithArrays twice and then call MATAXPY to get the sum M=M1baij + M2baij. Is there a better way to do it? Thank you. Best, Xiangdong
