On Fri, Apr 12, 2013 at 11:49 AM, Hui Zhang <mike.hui.zhang at hotmail.com>wrote:
> > On Apr 12, 2013, at 5:22 PM, Jed Brown wrote: > > > Hui Zhang <mike.hui.zhang at hotmail.com> writes: > > > >> Assembly it directly. I just found MatGetSubMatricesParallel. > > > > This is not a private implementation function so it's not a good place > > to learn. It also doesn't do what you want. > > > > For your purpose, you can either loop over the entries of A_i inserting > > them according to the R_i > > I can understand this method. A further question: since Ai itself is > shared > by many processors, MatSetValues to A should be called by only one of the > processor sharing Ai. Is it right? > MatSetValues() is not collective. > > or you can create a block diagonal parallel > > matrix A_i constructed by joining together all the diagonal blocks. > > Which function can do this? I only found diagonal block Mat with each > block > of the same size and dense. Thanks! > This is just a simple shift in index with normal MatSetValues(). Matt > > Presumably R is already parallel, so then you can use MatPtAP to > > assemble the product. > > > > Note that you might be able to assemble the block diagonal A directly. > > > >> Maybe I can learn from the source codes of this function but I can not > >> find where they are. > > > > For navigating source code, see the manual section about setting up GNU > > Global tags or etags. PETSc functions are named to tab complete well > > with tags. > > > > -- 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 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20130412/c84997f1/attachment.html>
