#include #undef __FUNCT__ #define __FUNCT__ "main" int main(int argc,char **args) { Mat A,R,ARt,C; PetscInt ai[5] = {0,2,4,6,8}; PetscInt aj[8] = {0,3,1,2,1,2,0,3}; PetscReal av[8] = {1,2,3,4,5,6,7,8}; PetscInt ri[3] = {0,1,2}; PetscInt rj[2] = {1,2}; PetscReal rv[2] = {1,1}; PetscErrorCode ierr; PetscInitialize(&argc,&args,(char *)0,(char *)0); ierr = MatCreateSeqAIJWithArrays(PETSC_COMM_WORLD,4,4,ai,aj,av,&A);CHKERRQ(ierr); ierr = MatCreateSeqAIJWithArrays(PETSC_COMM_WORLD,2,4,ri,rj,rv,&R);CHKERRQ(ierr); //this is ok: //ierr = MatMatTransposeMult(A,R,MAT_INITIAL_MATRIX,1.0,&ARt);CHKERRQ(ierr); //ierr = MatMatMult(R,A,MAT_INITIAL_MATRIX,1.0,&C);CHKERRQ(ierr); //ierr = MatView(C, PETSC_VIEWER_STDOUT_SELF);CHKERRQ(ierr); //this is not: ierr = MatRARt(A,R,MAT_INITIAL_MATRIX,1.0,&C);CHKERRQ(ierr); ierr = PetscFinalize(); return 0; }