Block-smoothers with variable block size
Nicolas Tardieu
niko.karin at gmail.com
Fri Mar 21 15:39:12 CDT 2008
Barry, Satish,
Thank you very much for these precious informations!
Nicolas
2008/3/21, Barry Smith <bsmith at mcs.anl.gov>:
>
>
> On Mar 21, 2008, at 8:03 AM, Nicolas Tardieu wrote:
>
> > Dear Barry,
> >
>
> > I have a few questions about inodes :
> > - can the user specify the inodes sizes (it seems to me this is an
> > automatic PETSc feature to gain performance, right?)?
>
>
> No, they must be inodes, they are not arbitary
>
> >
> > - can the inodes have different sizes?
>
>
> Yes, they are what ever they are.
>
> >
> >
> > 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.
>
>
> This is overkill, you will end up doing a lot more work then you
> need to!
> The locations for storing the diagonal blocks is already in the
> MATSEQAIJ data structures, if you
> write code to replace the MatRelax_Inode (that uses that same diagonal
> space) you are done.
>
>
> Barry
>
>
>
> >
> >
> > Thanks,
> >
> > Nicolas
> >
> > 2008/3/20, Barry Smith <bsmith at mcs.anl.gov>:
> > DON"T USE GREP! Use etags
> > # To access the tags in EMACS, type M-x visit-tags-table and specify
> > # the file petsc/TAGS.
> > # 1) To move to where a PETSc function is defined, enter M-. and the
> > # function name.
> > # 2) To search for a string and move to the first occurrence,
> > # use M-x tags-search and the string.
> > # To locate later occurrences, use M-,
> >
> > It may not be in petsc-2.3.3 you may need to use petsc-dev
> > http://www-unix.mcs.anl.gov/petsc/petsc-as/developers/index.html
> >
> > it is in src/mat/impls/aij/seq/inode.c
> >
> >
> >
> > Barry
> >
> >
> >
> > On Mar 20, 2008, at 1:52 PM, Nicolas Tardieu wrote:
> >
> > > Dear Barry,
> > >
> > > Thank you very much for your quick answer.
> > > I am searching for MatRelax_Inode in PETSc src directory using grep.
> > > But I just can't find it! Please note I am using 2.3.3p6
> > > Could you please tell me where this routine is?
> > >
> > > Nicoals
> > >
> > > 2008/3/20, Barry Smith <bsmith at mcs.anl.gov>:
> > > Nicolas,
> > >
> > > Actually we are very close to this. Check out the routine
> > > MatRelax_Inode() which is for AIJ matrices.
> > > For the block size it uses the inode size. If your matrix has inodes
> > > that match the blocks you want
> > > then everything is there already just use the PCSOR.
> > >
> > > If you do not have inodes then you can mimic the
> > MatRelax_Inode()
> > > code to make a new
> > > routine MatPBRelax_SeqAIJ(). If you do implement this we'd love to
> > add
> > > it to PETSc.
> > >
> > >
> > > Please let us know if you have additional questions.
> > >
> > >
> > > Barry
> > >
> > >
> > >
> > >
> > > On Mar 20, 2008, at 1:07 PM, Nicolas Tardieu wrote:
> > >
> > > > Dear PETSc experts,
> > > >
> > > > I am currently designing a multigrid PC that needs to operate on
> > > > variable block size matrices. I know PETSc does not support this
> > > > feature.
> > > > So, I will do it "by hand". Neverthless I would like to be able
> > to
> > > > use some smoothers like Jacobi or SOR in their block version.
> > > >
> > > > What is the best solution that would work both in sequential and
> > > > parallel?
> > > >
> > > > - define some MATSHELL that handle variable block size
> > > > -> will I be able to use in some way a block Jacobi or SOR?
> > > > -> would it be possible to use CSR inside the MATSHELL and
> > > > manage the variable blocks.
> > > >
> > > > - use a AIJ matrix and manage the blocks using some indirection
> > > > mechanism and reprogram Jacobi or SOR
> > > >
> > > >
> > > >
> > > > Thank you,
> > > >
> > > > Nicolas
> > > >
> > >
> > >
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20080321/fb8eabd6/attachment.htm>
More information about the petsc-users
mailing list