[petsc-users] MatCreateShell with VecCreateGhost

Bikash Kanungo bikash at umich.edu
Wed Dec 2 08:43:31 CST 2015


Thanks for your suggestion Barry.

Regards,
Bikash

On Tue, Dec 1, 2015 at 9:04 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:

>
>   This is a pretty different thing. DMGetLocalVector(da,localX,ierr) gives
> a vector back with the correct amount of space for local ghosts and if you
> use DMDA it this the correct way to go. VecCreateGhost() creates a special
> vector that actually stores both the ghosted and nonghosted values in
> overlapping regions, but is totally inappropriate for DMDA.
>
>   Barry
>
> > On Dec 1, 2015, at 7:56 PM, Timothée Nicolas <timothee.nicolas at gmail.com>
> wrote:
> >
> > Btw,
> >
> > If the vector X is created via a DMDA, then the vector localX and the
> pointer lx obtained via
> >
> > call DMGetLocalVector(da,localX,ierr)
> > call DMGlobalToLocalBegin(da,X,INSERT_VALUES,localX,ierr)
> > call DMGlobalToLocalEnd(da,X,INSERT_VALUES,localX,ierr)
> > call VecGetArrayReadF90(localX,lx,ierr)
> >
> > are automatically ghosted, right ?
> >
> > Thx
> >
> > Timothee
> >
> >
> > 2015-12-02 10:00 GMT+09:00 Barry Smith <bsmith at mcs.anl.gov>:
> >
> >   Sorry, I could not control myself.
> >
> >   So long as you pass vectors created with VecCreateGhost() to
> KSPSolve() the vectors passed to the multiply inside the solver will also
> be ghosted vectors.
> >
> >    Send all output messages etc if it doesn't work for you
> >
> >   Barry
> >
> >
> >
> > > On Dec 1, 2015, at 6:47 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
> > >
> > >
> > >> On Dec 1, 2015, at 5:18 PM, Bikash Kanungo <bikash at umich.edu> wrote:
> > >>
> > >> Hi,
> > >>
> > >> I want to implement a matrix-free KSP solve using user-defined
> MATOP_MULT and MATOP_MULT_TRANSPOSE. Each of these user-defined functions
> take in  Mat A, Vec x and Vec y as arguments and store A*x in y. To perform
> A*x in the user defined fashion, each processor requires access to some
> non-local nodes of x. So, is there a way I can create these two vectors (x
> and y) using VecCreateGhost?
> > >
> > >   Yes, use VecCreateGhost().
> > >
> > >   Barry
> > >
> > >
> > >>
> > >> Thanks,
> > >> Bikash
> > >>
> > >> --
> > >> Bikash S. Kanungo
> > >> PhD Student
> > >> Computational Materials Physics Group
> > >> Mechanical Engineering
> > >> University of Michigan
> > >>
> > >
> >
> >
>
>


-- 
Bikash S. Kanungo
PhD Student
Computational Materials Physics Group
Mechanical Engineering
University of Michigan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20151202/2418e806/attachment-0001.html>


More information about the petsc-users mailing list