Use DMCreateMatrix() and it will return the correctly sized matrix, with the 
correct parallel layout and the the correct nonzero preallocation for  the 
given DM.

   After these changes let us know if you have any problems.

   Barry

On May 7, 2014, at 10:11 PM, <[email protected]> <[email protected]> wrote:

> Dear Petsc developers,
> 
> I am solving a linear system Ax=b. The rhs vector b and the matrix A are
> defined as follows,
> 
> DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,M,3,1,NULL,&da);
> DMCreateGlobalVector(da, &b);
> 
> MatCreate(PETSC_COMM_WORLD, &A);
> MatSetSizes(A, PETSC_DECIDE, PETSC_DECIDE, M*3, M*3);
> MatMPIAIJSetPreallocation(A, 7, NULL, 7, NULL);
> MatSetUp(A);
> 
> There is a Memory corruption problem when calling
> KSPSetOperators(ksp, A, A, DIFFERENT_NONZERO_PATTERN);
> KSPSolve(ksp, x, b);
> 
> since the partition of A and b are not consistent. Should I use
> 
> KSPSetDM and KSPSetComputeOperators
> 
> for sovling this problem?
> 
> Thanks,
> 
> 
> 
> 
> 
> 

Reply via email to