Changing the matrix types worked. When solving AX=B, X and B have to be dense and A can be a sparse format? I'd like to avoid storing the identity as a dense format, if possible. By the way, the man page for MATAIJ says it's a sparse format http://www.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-current/docs/manualpages/Mat/MATAIJ.html .
I must ask, is there somewhere in the documentation I should be looking to figure these sorts of questions out? I feel like a pest, but I'm not sure where else to look for answers. On Thu, Jul 7, 2011 at 12:20 AM, Jed Brown <jedbrown at mcs.anl.gov> wrote: > On Wed, Jul 6, 2011 at 09:53, Adam Byrd <adam1.byrd at gmail.com> wrote: > >> I do not want the transpose, but that is what is coming out as the >> solution. Both my tests show the correct original matrix, and both yield the >> transpose of the solution verified against Mathematica and the website from >> which I pulled the 4x4 matrix in test.cpp. Could it be related to the >> factoring? > > > The problem is that you are trying to solve with an AIJ matrix instead of a > DENSE matrix. MatMatSolve() calls MatGetArray(). Since this is serial and > you preallocated enough for a dense matrix, it goes through with no memory > errors. The storage format for MATAIJ (that happens to be dense) and > MATDENSE is transposed, so you see the transpose. If you make the solution > matrix dense, then it will work correctly. > > > --- a/test.cpp > +++ b/test.cpp > @@ -48,7 +48,9 @@ int main(int argc,char **args) > ierr = MatAssemblyEnd(identityMat, > MAT_FINAL_ASSEMBLY);CHKERRQ(ierr); > > //Setup inverseMat > - ierr = MatDuplicate(testMat, MAT_DO_NOT_COPY_VALUES, > &inverseMat);CHKERRQ(ierr); > + ierr = MatCreate(PETSC_COMM_WORLD, &inverseMat);CHKERRQ(ierr); > + ierr = MatSetSizes(inverseMat, PETSC_DECIDE, PETSC_DECIDE, rows, > columns);CHKERRQ(ierr); > + ierr = MatSetType(inverseMat, MATDENSE);CHKERRQ(ierr); > ierr = MatAssemblyBegin(inverseMat, > MAT_FINAL_ASSEMBLY);CHKERRQ(ierr); > ierr = MatAssemblyEnd(inverseMat, > MAT_FINAL_ASSEMBLY);CHKERRQ(ierr); > > > > PETSc should be more careful about matching types here. > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20110707/91d4b90d/attachment.htm>
