----- Original Message ----- From: Barry Smith <[email protected]> Date: Monday, February 12, 2007 2:42 pm Subject: Re: Partitioning on a mpiaij matrix
> > It is convertfrom, not convert you need to check. > > In src/mat/impls/adj/mpi/mpiadj.c MatCreate_MPIAdj > there is the line > ierr = PetscMemcpy(B- > >ops,&MatOps_Values,sizeof(struct _MatOps));CHKERRQ(ierr); > in the MatOps_Values above it there is > /*60*/ 0, > MatDestroy_MPIAdj, > MatView_MPIAdj, > MatConvertFrom_MPIAdj, > 0, > > Therefor the conversion function convertfrom MUST be in the matrix > ops table > when the convert is called. But it is not for you, how is this > possible? > > Barry > I made some progress but it's not very comprehensible It's seems there is a problem with parmetis. When i compile petsc without parmetis, this line don't give an error. CALL Matconvert(mat,MATMPIADJ,MAT_INITIAL_MATRIX,mat2,ierr) CHKERRQ(ierr) With mat created with CALL MatCreateMPIAIJ (PETSC_COMM_WORLD, partTab(rk+1), partTab(rk+1), N, N, 30 , PETSC_NULL_INTEGER, 30, PETSC_NULL_INTEGER, mat, ierr) But, when petsc is compiled with parmetis, the call to MatConvert give the error [0]PETSC ERROR: No support for this operation for this object type! [0]PETSC ERROR: Mat type mpiadj! -- Dimitri Lecas
