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