MatGetVecs and MATMFFD

Boyce Griffith griffith at
Thu Aug 21 11:58:58 CDT 2008

On Thu, 21 Aug 2008, Lisandro Dalcin wrote:

> On Thu, Aug 21, 2008 at 1:23 PM, Boyce Griffith
> <griffith at> wrote:
>> Is there any way to associate a context with a MFFD matrix?  It seems like
>> the Otherwise, it seems like the implementation of MatGetVecs would need to
>> use global variables in order to create the appropriate vectors.
> You can use a PetscContainer (see PetscContainerCreate() and friends)
> to save your user data and then you can set put that container in any
> PETSc object with PetscObjectCompose(), and next retrieve the
> container with PetscObjectQuery(), and finally recover your user data
> with PetscContainerGetPointer().

Sounds like that should do the trick.

>> Or is it possible to get access to the solution and right-hand-side vectors
>> used by an associated SNES and use VecDuplicate on them?
> You can use SNESGetRhs() and SNESGetSolution(). At least in petsc-dev
> (not so sure in last public release, I do not remember), you will get
> back a reference to the 'b' and 'x' Vec's you passed to
> 'SNESSolve(snes, b, x)'. You can even SNESGetSolutionUpdate() for
> getting the Vec where the solution update for the Newton step is
> formed.

Right, but if all I have is the Mat, is there a userland function which 
will return the corresponding SNES?


-- Boyce

More information about the petsc-users mailing list