[petsc-users] VecGetSubVector

Barry Smith bsmith at mcs.anl.gov
Mon Jan 3 10:43:41 CST 2011


 Gianluca,

    The expected use is with the VecScatter object. First you create a VecScatter object with VecScatterCreate() then each time you need the "subvector" you call VecScatterBegin() followed by VecScatterEnd() Note that usually the VecScatter object is retained and used many times.

   Barry


   
On Jan 3, 2011, at 5:22 AM, Gianluca Meneghello wrote:

> Hi,
> 
> I'm new to PETSc, so that this can be a very simple question:
> 
> I'm looking for something like VecGetSubVector, which I've seen it
> exists in the dev version but not in the released one.
> 
> I need to write a smoother for a multigrid algorithm (something like a
> block Gauss Seidel) which can be written in matlab as
> 
> for j = 1:ny
>  P = <some matrix indices as function of j>;
>  du(P) = L(P,P) \ (  rhs(P) - L(P,:)*du + D2(P,P)*du(P) );
> end
> 
> where L is a matrix (in my case the linearized Navier Stokes).
> 
> I was thinking about using IS for declaring P, so that D2(P,P) can be
> obtained using MatGetSubMatrix. I would need the same for the vector
> du.
> 
> Is there a way to do that without using the developer version? (I
> really don't feel like being "experienced with building, using and
> debugging PETSc).
> 
> Thanks in advance
> 
> Gianluca



More information about the petsc-users mailing list