[petsc-users] customized MatMult

Matthew Knepley knepley at gmail.com
Mon Jan 19 09:40:28 CST 2015


On Mon, Jan 19, 2015 at 9:28 AM, Marco Cisternino <
marco.cisternino at optimad.it> wrote:

> Good morning,
> I'm writing my MatMult function, but I don't know how to treat the ghost
> elements of the result vec. Let's say myMatMult(A,x,y).
>
> First question is: if I use my MatMult in a KSP to solve a linear system,
> do I have to update ghost elements in the result vec of MatMult?? Consider
> that any time the code enters myMatMult the vec x is copied in my container
> and the ghost of my container are updated. I made computation for
> matrix-vector and I copied the results in vec y, without considering ghost
> elements of y.
>
> Second question: if I have to, how?
> Let's say I state:
> ierr = myMatMult(A,x,y);
> and x has been built out of myMatMult with VecGhostCreate.
> How do I update ghost elements of y in myMatMult?
> VecGhostUpdateBegin/VecGhostUpdateEnd in myMatMult?
>
> Any hints would be appreciated.
>

There is some confusion here about the spaces that Vecs represent. Vecs in
the solver are globally
assembled vectors, which come from the "global" space. Vecs used in
calculated integrals, differences,
etc. for assembly often have ghost entries. We will say that these come
from the "local" space.

MatMult takes in a global Vec x and returns a global Vec y.

  Hopefully that is clear,

     Matt


> Thanks for you advices in advance.
>
> Bests,
>
> Marco
>



-- 
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/20150119/1a0e0140/attachment.html>


More information about the petsc-users mailing list