On Thu, 21 Aug 2008, Matthew Knepley wrote:
> On Thu, Aug 21, 2008 at 11:58 AM, Boyce Griffith > <griffith at courant.nyu.edu> wrote: >> >> >> On Thu, 21 Aug 2008, Lisandro Dalcin wrote: >> >>> On Thu, Aug 21, 2008 at 1:23 PM, Boyce Griffith >>> <griffith at courant.nyu.edu> 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? > > There is no SNES that corresponds to a Mat, rather the SNES holds a Mat, > which is oblivious. The MatGetVecs() routine is there to provide vectors > which have a layout that matches the Mat. This is done by using the same > PetscMap as the matrix rows. Presumably it isn't *totally* oblivious, otherwise MatCreateMFFD wouldn't take a SNES as an argument? -- Boyce > > Matt > >> Thanks, >> >> -- Boyce > -- > 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 > >
