Dear Barry,<br><br>I have a few questions about inodes :<br>- can the user specify the inodes sizes (it seems to me this is an automatic PETSc feature to gain performance, right?)?<br>- can the inodes have different sizes?<br>
<br>Otherwise I plan to define a new matrix type MATSEQVBAIJ (VB for variable block) based on MATSEQAIJ with an additional attribute defining the block sizes.<br><br>Thanks,<br><br>Nicolas<br><br><div><span class="gmail_quote">2008/3/20, Barry Smith <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>>:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br> DON"T USE GREP! Use etags<br> # To access the tags in EMACS, type M-x visit-tags-table and specify<br> # the file petsc/TAGS.<br> # 1) To move to where a PETSc function is defined, enter M-. and the<br> # function name.<br>
# 2) To search for a string and move to the first occurrence,<br> # use M-x tags-search and the string.<br> # To locate later occurrences, use M-,<br> <br> It may not be in petsc-2.3.3 you may need to use petsc-dev<br>
<a href="http://www-unix.mcs.anl.gov/petsc/petsc-as/developers/index.html">http://www-unix.mcs.anl.gov/petsc/petsc-as/developers/index.html</a><br> <br> it is in src/mat/impls/aij/seq/inode.c<br> <br><br> <br> Barry<br>
<br><br> <br> On Mar 20, 2008, at 1:52 PM, Nicolas Tardieu wrote:<br> <br> > Dear Barry,<br> ><br> > Thank you very much for your quick answer.<br> > I am searching for MatRelax_Inode in PETSc src directory using grep.<br>
> But I just can't find it! Please note I am using 2.3.3p6<br> > Could you please tell me where this routine is?<br> ><br> > Nicoals<br> ><br> > 2008/3/20, Barry Smith <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>>:<br>
> Nicolas,<br> ><br> > Actually we are very close to this. Check out the routine<br> > MatRelax_Inode() which is for AIJ matrices.<br> > For the block size it uses the inode size. If your matrix has inodes<br>
> that match the blocks you want<br> > then everything is there already just use the PCSOR.<br> ><br> > If you do not have inodes then you can mimic the MatRelax_Inode()<br> > code to make a new<br> > routine MatPBRelax_SeqAIJ(). If you do implement this we'd love to add<br>
> it to PETSc.<br> ><br> ><br> > Please let us know if you have additional questions.<br> ><br> ><br> > Barry<br> ><br> ><br> ><br> ><br> > On Mar 20, 2008, at 1:07 PM, Nicolas Tardieu wrote:<br>
><br> > > Dear PETSc experts,<br> > ><br> > > I am currently designing a multigrid PC that needs to operate on<br> > > variable block size matrices. I know PETSc does not support this<br> > > feature.<br>
> > So, I will do it "by hand". Neverthless I would like to be able to<br> > > use some smoothers like Jacobi or SOR in their block version.<br> > ><br> > > What is the best solution that would work both in sequential and<br>
> > parallel?<br> > ><br> > > - define some MATSHELL that handle variable block size<br> > > -> will I be able to use in some way a block Jacobi or SOR?<br> > > -> would it be possible to use CSR inside the MATSHELL and<br>
> > manage the variable blocks.<br> > ><br> > > - use a AIJ matrix and manage the blocks using some indirection<br> > > mechanism and reprogram Jacobi or SOR<br> > ><br> > ><br> > ><br>
> > Thank you,<br> > ><br> > > Nicolas<br> > ><br> ><br> ><br> <br> </blockquote></div><br>