[petsc-users] Questions for MatSolve

Barry Smith bsmith at mcs.anl.gov
Thu Jul 21 13:15:31 CDT 2016


> On Jul 21, 2016, at 11:38 AM, Eduardo Jourdan <eduardojourdan92 at gmail.com> wrote:
> 
> Thank you for the quick answer.
> 
> I didn't realize that I could use PC without KSP interface. I also think that it is what I wanted. Nevertheless, as long as I figured out from the source code, PcApply for PCSOR basically do some interface and preparations and then calls MatSOR. I saw that depending on the matrix ('BAIJ, SBAIJ, and AIJ matrices with Inodes') it does SOR smoothing or block SOR smoothing. 
> 
> I think that in my case the seqaij matrix with bs=4 had Inodes with size 4. That is why calling MatSOR with seqaij or calling with seqbaij converted from the seqaij seem to give the same result.
> However, with the matrix seqaij with bs = 16 I can guess that the rows inside a block dont have the same nonzero pattern, so Inodes size are different from block size. I happened to see the follow note in the MatSOR website page: "Developer Note: We should add block SOR support for AIJ matrices with block size set to great than one and no inodes ". This may be the reason why seqaij and seqbaij are leading to different results with my matrix of bs = 16. I think that answer all may previous questions. I am sorry, I've got confused and wrote MatSolve instead of MatSOR in my previous email, what changes it completely.

    Your analysis is correct. In general PCSOR will produce different convergence histories for AIJ and BIJ block size > 1. The BAIJ may convergence (due to the blocking) when the AIJ does not; I suppose the opposite may be possible but seems unlikely.

   Barry

> 
> Best Regards
> 
> Eduardo
> 
> 
> 
> 
> 
> 2016-07-20 0:03 GMT-03:00 Matthew Knepley <knepley at gmail.com>:
> On Tue, Jul 19, 2016 at 8:17 PM, Eduardo Jourdan <eduardojourdan92 at gmail.com> wrote:
> Hi all,
> 
> I would like to perform a specific number (for instance 4 of forward and backward sweeps with a seqaij matrix with block size 4, vectors b and x. Also, I need to do this same procedure with another matrix seqaij block size 16. I would appreciate if someone knows the best way to do it. 
> 
> It sounds like you want PCSOR and PCApply, not MatSolve.
> 
>   Thanks,
> 
>      Matt
>  
> 1 - I've been trying to use MatSolve. For the bs=4 it seems to work, but with the other matrix with bs=16 the residue diverges. When I call matConvert to convert the later matrix for a seqbaij with bs=16 the result changes and the linear residue is reduced. It is supposed to happen or it is more possible that i am doing something wrong? 
> 
> 2 - MatSolve for seqbaij and seqaij with the same block sizes gives the same results in terms of solution (not performace, memory) ?
> 
> 3 - Can do I do a specific number of sweeps as told before with the KSP/PC interface?
> 
> 4 - I saw the manual for the MatSolve and It says that it is for factored matrix. Can I use a matrix just after the MatAssembly calls?
> 
> Best regards,
> 
> Eduardo Jourdan
> 
> 
> 
> -- 
> What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
> -- Norbert Wiener
> 



More information about the petsc-users mailing list